文档章节

git revert 和reset的区别

mingkaidox
 mingkaidox
发布于 2013/07/16 15:25
字数 667
阅读 28768
收藏 12

这里讲一下git revert和git reset的区别:

git revert 是撤销某次操作,此次操作之前的commit都会被保留

git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区

具体一个例子,假设有三个commit, git st:

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

当执行git revert HEAD~1时, commit2被撤销了

git log可以看到:

commit1:add test1.c

commit3:add test3.c

git st 没有任何变化

如果换做执行git reset --soft(默认) HEAD~1后,运行git log

commit2: add test2.c

commit1: add test1.c

运行git st, 则test3.c处于暂存区,准备提交。

如果换做执行git reset --hard HEAD~1后,

显示:HEAD is now at commit2,运行git log

commit2: add test2.c

commit1: add test1.c

运行git st, 没有任何变化

----------------------------------------------------------------------------------------------

另外,说一下git revert ,git reset –hard和 –soft的区别

git reset –mixed id ,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变)。
git reset –soft id. 实际上,是git reset –mixed id 后,又做了一次git add
git reset –herd id.是将git的HEAD变了,文件也变了。

git revert与git reset最大的不同是,git revert 仅仅是撤销某次提交。
比如git revert HEAD~1  ,那么会撤销倒数第二次的提交结果。而倒数第一次的提交记录,仍然在。
如果git reset –hard HEAD~1,那么,commit退回到倒数第三次的状态中。
总体来讲,还是git revert 好啊,雁过留声嘛。

其实,通过git reset –soft id的方法,可以将原来多次的git提交记录合并为一个。

git reset是指将当前head的内容重置,不会留log信息。

  • git reset HEAD filename  从暂存区中移除文件
  • git reset –hard HEAD~3  会将最新的3次提交全部重置,就像没有提交过一样。
  • git reset –hard commit (38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本

----------------------------------------------------------------------------------------------

根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:

  1. git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
  2. git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
  3. git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

git reset -soft :取消了commit  

git reset -mixed(默认) :取消了commit ,取消了add

git reset -hard :取消了commit ,取消了add,取消源文件修改

====

http://hi.baidu.com/lingzhixu/blog/item/569f45c4cbf39925f8dc619e.html

本文转载自:http://hi.baidu.com/lingzhixu/blog/item/569f45c4cbf39925f8dc619e.html

上一篇: 七零八落
下一篇: 替代git merge
mingkaidox
粉丝 13
博文 26
码字总数 8887
作品 0
闵行
程序员
私信 提问
加载中

评论(6)

CraneHuang
CraneHuang
git revert 并不会改写commit history
金拱门
金拱门
太棒了!学到了
mingkaidox
mingkaidox 博主

引用来自“东厢里的一只喵”的评论

想知道怎么把github上的目录删除掉,或者是清空。
只知道比较笨的方法… git reset --hard 第一次提交的id 然后强制push上去 这个应该会回到第一次提交…之后的所有东西都会被删除且不可逆… 要删除为什么不直接在github上删除项目?
东厢里的一只喵
东厢里的一只喵
想知道怎么把github上的目录删除掉,或者是清空。
pythonwood
pythonwood
git,vim学习
sharpcx
sharpcx
8错,学到了
Git进阶(二):git revert 用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunhuaqiang1/article/details/88654398 git revert 撤销 某次操作,此次操作之前和之后的commit和history都会...

No Silver Bullet
03/19
0
0
Git reset/revert的应用

课下来自己动手试试git的命令 主要尝试及记录 以上3个命令的具体作用及区别,这些命令主要用于撤销修改,但又各有些小区别 尝试准备 首先,为了制造合适的测试环境,我选择重新初始化一个本地...

秦亦辰
2017/08/15
0
0
git 撤销操作 git reset与git revert的使用

先简单说一下,在提交到远程库之前我们使用git reset 命令完全可以满足我们 撤销操作的需求,如果操作已经提交到远程库,那只好使用 git revert 来提交一个新的撤销操作 撤销 需要撤销的那次...

悟_空
2017/12/15
0
0
详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别

一、可以将git简单的分为三个区域 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history) 如图: 其中git add files 把当前工作目录中的文件放入暂存区域 这其...

天王盖地虎626
02/09
96
0
git-各种撤销操作之reset和revert使用

一、使用场景 在使用git提交代码的过程中,难免会出现失误,而我们补救的方法就是撤销,而常用的撤销无非就两个命令,reset和revert,那他们两个如何使用以及区别是什么呢? 二、使用方法 1....

键盘走过的日子
2018/03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
42分钟前
4
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
55分钟前
5
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
59分钟前
7
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
7
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部