Git 撤销修改
2014-05-07 16:49
232 查看
增补提交
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/
相关文章推荐
- 算法竞赛入门经典 6.1.1 卡片游戏
- 鞋子心理学
- Go中如何简洁的使用并发
- Wireless Tools for Linux
- linux统计文件夹某一些文件的大小总和
- 经典算法面试题及答案
- Ubuntu - Dconf 注册表键值修改参考表
- 腾讯qq2014最新版 v5.4.11058 官方电脑版
- CakePHP URL重写
- 包含抽象方法的枚举类
- Sdut 2108 Alice and Bob(数学题)(山东省ACM第四届省赛D题)
- 12 TOP Command Examples in Linux
- 用plyr包扩展apply族函数的功能
- 面向对象的设计原则
- datagrview导出excel
- 卸载sql2008r2简易版
- Linux自动修改IP脚本(手动编写)
- 三叉神经痛经验方(知老)
- nginx一些参数配置详解
- 有梦想 就能赢