18
  • 把文件存入本地暂存区:

    • 把新建文件、修改过的文件存入本地暂存区:git add .
    • 把修改过的文件、删除的文件存入本地暂存区:git add -u
    • 把新建文件、修改过的文件、删除的文件存入本地暂存区: git add -A,相当于上两条之和
  • 将本地暂存区的文件推送到本地库:git commit -m '修改提示'
  • 查看当前 git 状态:git status
  • 从 github 上克隆项目: git clone <github url>
  • 将本地库文件的修改推送到绑定的 github: git push

    • git push <远程主机名> <本地分支名>:<远程分支名>
      比如我要将本地的wy分支推送到远程wy分支,使用:
      git push origin wy:wy
      如果省略远程分支名,则表示将本地分支推送到与之存在"追踪关系"的远程分支(通常同名),如果该远程分支不存在,则会被新建。
  • 将远程库文件拉取到本地仓库:

    • git pull:会自动将本地版本与新版本merge
    • git fetch:不会自动将本地版本与新版本merge
  • 分支:

    • 创建的新的分支:git branch <branch-name>
    • 查看分支:git branch

      • 在 git bash 中用此命令,按键盘下键查看未显示部分,输入 q 退出
    • 切换分支: git checkout <branch-name>
    • 合并分支:git merge origin/<branch-name> 合并之前要先切换到合并的目标分支上
    • 删除分支:git branch -d <branch-name>
  • 版本回退:

    • git log 会显示最近的三个版本,head 指针指向最近的版本,输入 q 可以退出git log。回退之前,用git log确定要回退到哪个版本。

      • 加上--pretty=oneline 会简化信息
    • 版本回退:

      • git reset --hard HEAD^ 回退到上一个版本,上上是HEAD^^,往上一百个是HEAD~100
      • 直接回退到commit-id所对应版本,git reset --hard commit-id
    • git reflog 可以查看git 的历史操作,如果使用git reset回退错误,想要再次回到未来的版本,可以使用git reflog 来查看回退之前的版本号。
    • git revert是产生一次新的提交,不过这次提交的改动与之前的改动是相反的,也就是说利用新的提交去覆盖之前的修改。
  • git 更改远程仓库地址:git remote set-url origin <新的url>
  • 本地仓库整体上传到远程仓库

    1. 首先在github新建一个仓库(最好不要初始化README.md,因为远程仓库和本地仓库不一样,首先要git pull同步,经常出问题...)。
    2. 将本地仓库与远程仓库连起来:
      git remote add origin git@github.com:yourname/仓库名.git
    3. git push -u origin master
  • git diff:查看当前代码的修改情况,git diff HEAD -- readme.txt 查看当前工作区和版本库最新版本之间的差别。
  • git多人协作的工作模式通常是这样:

    1. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致
    2. 将本地分支推送到远程同名分支:git push origin branch-name:branch-name
    3. 如果推送失败,说明远程分支内容比本地更新,需要先抓取并合并,git pull
    4. 如果抓取也失败,可能是本地dev分支与远程origin/dev分支的未建立链接:git branch --set-upstream-to=origin/dev dev,再次使用git pull抓取合并
    5. 如果合并有冲突,则解决冲突,并在本地提交
    6. 再次推送:git push origin wy:wy
  • 管理修改

    • 场景一:工作区的修改没有提交到暂存区(没有git add),使用git checkout -- filename,丢弃工作区的改动。
    • 场景二:工作区的修改提交到了暂存区,使用git reset HEAD -- filename 回到场景一。
    • 场景三:提交到了版本库(git commit),使用git reset --hard commit-id 回退版本。
  • 多人开发时,先git add . --> git commit -m '' --> git push(本地非最新) --> git pull --> git push,这样可能产生两条提交记录,一条是本地的修改记录,另一条的合并代码的记录。解决办法,本地修改文件后,先git stash将修改暂存起来,再git pull,更新本地代码,再git stash pop,将暂存的本地修改合并到拉取的版本中,可能会产生冲突,解决了冲突后,再执行git add . -> commit -> push的提交流程。
  • 已提交commit后修改commit信息:git commit --amend,输入i后进入vim编辑,编辑好后,Esc:wq保存退出

Leon
1.4k 声望1k 粉丝