GuangchaoSun's Blog

git阶段总结续

git checkout

  • git checkout -- <file_name> #这条命令把filename从HEAD中签出
  • git checkout . #这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
  • 注意:在使用git checkout时,如果其对应的文件被修改过,那么该修改会被覆盖掉。 命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commitgit add时的状态。

复原

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

链接到github(三步走):

1
2
3
git remote add origin git@github.com:sunguangchao/hellow-world.git
git pull origin master
git push -u origin master

git pull –rebase

  • git pull = git fetch + git merge
  • git pull --rebase = git fetch + git rebase

git bash出现vim的时候怎么退出?

  • 命令模式下,先输入i进入编辑模式
  • 想退出的话,首先Esc退出输入状态,然后Shift+;,再输入qwq(q不保存改动,wq是保存文件的写入修改)
  • vim使用教程

git stash

  • 使用git stash保存当前的工作现场,那么就可以切换到其他分支进行工作,或者在当前分支上完成其他紧急的工作,比如修订一个bug测试提交。
  • 如果一个使用了一个git stash,切换到一个分支,且在该分支上的工作未完成也需要保存它的工作现场。再使用git stash。那么stash 队列中就有了两个工作现场。
  • 可以使用git stash list。查看stash队列。
  • 如果在一个分支上想要恢复某一个工作现场怎么办:先用git stash list查看stash队列。确定要恢复哪个工作现场到当前分支。然后用git stash pop stash@{num}。num 就是你要恢复的工作现场的编号。
  • 如果想要清空stash队列则使用git stash clear
  • 同时注意使用git stash pop命令是恢复stash队列中的stash@{0}即最上层的那个工
  • git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop

从工作区添加到暂存区

git add .git reset HEAD <file_name>配合使用
git reset HEAD <file_name>可以将某文件从已经git add的列表中剔除出去

git cherry-pick commit_SHA

简而言之,cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug。如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit

branch切换有关的命令

1
2
3
4
5
6
git branch -D #删除一个分支
git branch -r # List remote branches
git branch -a # List local branches and remote branches
git branch -va #查看所有的远程分支
git checkout -b <name> <remote_name> #创建并转到远程分支并改名字为name
git push origin <name> #可以把本地创建的分支push到远端

Remove file from both repo and wroking directory : git rm <file>

tag相关的命令

1
2
3
4
git tag <name> #创建版本
git tag -r #查看远程版本
git tag -a <name> -m 'comment' #新建一个name tag,并添加comment
git push origin <tag_name> #把标签传送到远程服务器

merge流程

要想从一个branch merge回main_line可以通过merge commit IDtag或者branch三者中的一个来进行。

  • 为了确保安全,要基于最新的main_line新建一个temporary branch当做跳板。
  • 在temporary branch上进行merge并resolve conflict,完成后一定要push到远程。
  • 然后在main-line上merge romote temporary branch

注意:在main-line上merge romote temporary branch的时候,不能有别人的提交,不然会失败,这是使用tempary branch的意义之一:可以减少这个过程的时间。

resolve the conflict

1
2
3
vim <file> #edit the conflict file
git add <file>
git commit -s