Git 撤销修改
2014-05-05 16:35
253 查看
增补提交
git commit –C HEAD –a --amend-C表示复用指定提交的提交留言,这个例子中是HEAD,实际上可以指定其他有效的提交名称。
如果参数是小写的-c,就会打开预先设置好的编辑器,以便在已有的提交留言基础上编辑修改。
增补提交只能针对最后一个提交,如果想更正好几个提交之前的某个错误,则须使用git revert这个命令。
反转提交
反转已经提交的改动,使用git revert命令,此命令通过在版本库中创建一个“反向的”新提交来抵消原来提交的改动。通常Git会立即提交反转结果,但是也可以通过参数-n告诉Git先不要提交,这用于反转多个提交非常有用,运行多个git revert –n命令,Git会暂存所有的变更,然后做一次性提交。
做反转操作的时候必须提供提交名称,反转总是按照从新到旧点的倒序来操作的,即最后的提交最先反转,这样可以避免一些不必要的冲突。
复位
命令git reset可以在复位版本库后,暂存工作目录树中因复位产生的与版本库的差异,以便提交。这对于在之前的提交中发现错误并需要更改时非常有用。
这是通过--soft选项实现的,它使得Git暂存所有的因复位带来的差异,但不提交它。之后,用户可以修改这些内容再提交,或者干脆扔掉这些内容。
选项--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/ 圣骑士Wind的博客
相关文章推荐
- 六、Git-撤销修改
- git基础:3.撤销修改
- git-【四】撤销修改和删除文件操作
- Git学习笔记二(版本回退、工作区和暂存区、撤销修改、删除文件)
- GIT 检查、撤销修改简明教程
- git图形化工具GitKraken的使用——撤销工作区的修改(checkout)
- Git-撤销修改
- Git_撤销修改
- git撤销修改
- git(工作区,暂存区,管理修改,撤销修改,删除文件)
- git使用技巧-撤销未提交修改
- 【GIT-2】GIT 的基础教程 工作区暂存区,修改,撤销,删除 远程仓库
- git——撤销修改
- Git撤销git commit 但是未git push的修改
- git学习(四):撤销修改和撤销删除
- git 撤销修改
- git 撤销未提交的修改
- git 撤销所有本地修改
- Git 撤销修改
- git使用之撤销部分修改