Git 撤销修改

增补提交

  git commit –C HEAD –a --amendhtml

  -C表示复用指定提交的提交留言,这个例子中是HEAD,实际上能够指定其余有效的提交名称。git

  若是参数是小写的-c,就会打开预先设置好的编辑器,以便在已有的提交留言基础上编辑修改。缓存

  增补提交只能针对最后一个提交,若是想更正好几个提交以前的某个错误,则须使用git revert这个命令。编辑器

 

反转提交

  反转已经提交的改动,使用git revert命令,此命令经过在版本库中建立一个“反向的”新提交来抵消原来提交的改动spa

  一般Git会当即提交反转结果,可是也能够经过参数-n告诉Git先不要提交,这用于反转多个提交很是有用,运行多个git revert –n命令,Git会暂存全部的变动,而后作一次性提交。版本控制

  作反转操做的时候必须提供提交名称,反转老是按照重新到旧点的倒序来操做的,即最后的提交最早反转,这样能够避免一些没必要要的冲突。htm

 

复位

  命令git reset能够在复位版本库后,暂存工做目录树中因复位产生的与版本库的差别,以便提交。blog

  这对于在以前的提交中发现错误并须要更改时很是有用。get

  这是经过--soft选项实现的,它使得Git暂存全部的因复位带来的差别,但不提交它。以后,用户能够修改这些内容再提交,或者干脆扔掉这些内容。it

  选项--hard要当心使用,该选项会从版本库和工做目录树中同时删除提交,--hard就好像版本库中的删除键,而且不可恢复。

  git reset是以提交名称做为参数的,默认值是HEAD,能够用^~做为提交名称的修饰符来指定某个版本。

  HEAD^是指把版本库复位到当前HEAD以前的那个节点上,把HEAD这个版本的修改扔到工做目录树中,

  540ecb7~3是指要复位到540ecb7以前的三个节点上,即把该提交和以前的两个提交(共三个提交)扔到工做目录树中。

 

  git reset --hard HEAD^ 强制复位前一个提交。

  git reset HEAD能够用来清除已经add到缓存区可是不想进一步提交的内容。

  另外一种方式是用git rm --cached,选项--cached代表是清除缓存区,而后不动工做目录树。

  注意git checkout filename将会删除该文件中全部没有暂存和提交的改动,这个操做是不可逆的。

 

参考资料

  《版本控制之道——使用Git》(Pragmatic Version Control Using Git)

  Git分支管理策略:http://www.ruanyifeng.com/blog/2012/07/git.html

  Git Reference: http://gitref.org/

相关文章
相关标签/搜索