码迷,mamicode.com
首页 > 其他好文 > 详细

git使用笔记(七)版本回退和撤销

时间:2016-11-23 06:28:19      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:第一个   comm   set   提交   style   black   git   ever   模式   

By francis_hao    Nov 21,2016

从版本库初始化开始,每一步的撤销操作

添加第一个文件

在空的版本库中创建了一个文件并git add到了缓存区,这时候怎么撤销呢?

技术分享

撤销单个文件和整个目录

$ git rm --cached a
$ git rm --cached . -r

首次commit内容不能撤销,不过一旦提交了一次之后,git就能发挥它强大的版本控制作用了

修改了文件

在本地修改了文件,但是还没有add操作,也就是撤销本地的修改

技术分享

撤销单个文件和整个目录,"--"虽然可以省略,但还是以规范为重。表示检出文件,而不是分支

$ git checkout -- a
$ git checkout -- .

add了修改的文件

将修改的文件add到了缓存区,后悔了想撤销但本地的修改不变

技术分享

撤销单个文件和整个目录

$ git reset HEAD c
$ git reset HEAD .

reset有几种模式,默认模式为mixed,也就是将版本库和缓存区里的重置,但本地文件不动。

技术分享

commit了修改的文件

将修改的文件commit到版本库里了,后悔了想撤回到之前的版本,如下图,共有5次提交,目前在E位置,想回到C位置

技术分享

$ git reset --hard C_value

这样就直接回到C位置,后面的两次提交被舍弃了。当然还可以通过git reflog查看哈希值再返回。

技术分享

撤销某次提交

还是以上面的5次提交为例,发现在C提交的内容中引入了错误,需要取消C的提交,但是C之后的D和E提交需要保留,实际上就是两个提交的比较,一个是C之前的,一个是C之后的,C之前的就是B了,C之后的D因为又有了新提交E,所以就以C以后最新的提交为准,也就是B和E合并,如果可以合并,git会自动合并,如果不能自动合并,就需要手动解决冲突了,

$ git revert C_value

 

技术分享

技术分享

如果有冲突,不想解决,想取消revert

$ git revert --abort

有冲突,解决了之后

$ git add <file_that_conflict>
$ git revert --continue

其中add为了让git知道冲突已经解决了,根据需要add也许是rm或mv

 

 

 

 

 

技术分享
本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/

 

参考

 

 

git使用笔记(七)版本回退和撤销

标签:第一个   comm   set   提交   style   black   git   ever   模式   

原文地址:http://www.cnblogs.com/yinghao1991/p/6091613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!