Git进阶操作 - littleboy12580/learning_python GitHub Wiki

合并提交

git rebase -i HEAD~3     #表示将最新的前3次提交合并在一起

使用上述命令后出现界面,将界面里的pick除第一个以外都改为squash

撤销提交

git reset --hard commit_id    #将本地库退回至给的id号那时候的状态

应用提交

git cherry-pick commit_id    #将某个id号的提交应用到当前分支

推送本地分支到远程新分支上

git push origin local_branch:remote_branch

git stash命令

git stash

备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中

git stash pop

从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复

git stash list

显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复

git stash clear

清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了

使用场合

使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来

参考链接

http://www.cppblog.com/deercoder/archive/2011/11/13/160007.aspx

git show

查询某次提交的修改内容,后面接commit id

git commit --amend

修改某次提交的注释