文档章节

git revert

秋风醉了
 秋风醉了
发布于 2015/08/25 12:01
字数 691
阅读 1206
收藏 3

git revert

现在有四次提交,

commit df2aab98015cbd253ba41d59874c2822536dc460
Author: Yale Li <hellolyx1618@gmail.com>
Date:   Tue Aug 25 11:33:00 2015 +0800

    four commit

commit 014305c26d6e8f321c87905de746e68106764ba4
Author: Yale Li <hellolyx1618@gmail.com>
Date:   Tue Aug 25 11:32:21 2015 +0800

    third commit

commit 81a493e42cd43fb69daca3c04d961bf9e6485dc6
Author: Yale Li <hellolyx1618@gmail.com>
Date:   Tue Aug 25 11:31:41 2015 +0800

    second commit

commit 5886426c4c12f8546496afe45edd06669c4a7863
Author: Yale Li <hellolyx1618@gmail.com>
Date:   Tue Aug 25 10:31:07 2015 +0800

    first commit

git revert用于反转提交,执行evert命令时要求工作树必须是干净的。

git revert用一个新提交来消除一个历史提交所做的任何修改。

revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新(这里不会像reset造成冲突的问题)。


我们现在修改第二次提交历史,找到第二次commit 的标记代码81a493e42cd43fb69daca3c04d961bf9e6485dc6。

效果如下,

➜  sample git:(master) git revert 81a493e42cd43fb69daca3c04d961bf9e6485dc6
error: could not revert 81a493e... second commit
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
➜  sample git:(master) ✗ git status
On branch master
You are currently reverting commit 81a493e.
  (fix conflicts and run "git revert --continue")
  (use "git revert --abort" to cancel the revert operation)

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

	both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

嗯,revert失败了,是因为revert过程中和现有本地仓库的代码出现了冲突,需要解决这次冲突然后再做一次提交,也就是通过一次新的提交来解决有问题的代码。

运行git revert --abort来删除这次revert。

➜  sample git:(master) ✗ git revert --abort
➜  sample git:(master) git status
On branch master
nothing to commit, working directory clean

重新选择一次提交来revert。选择第三次提交,修改第三次提交的内容为 recover third commit。。

➜  sample git:(master) git revert 014305c26d6e8f321c87905de746e68106764ba4
error: could not revert 014305c... third commit
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

然后看一下冲突的文件,

first commit
second commit
<<<<<<< HEAD
third commit
four commit

=======
>>>>>>> parent of 014305c... third commit

解决办法就是把冲突的部分解决掉,然后做一次提交,如下解决冲突后的文件内容,

first commit
second commit
recover third commit
four commit

提交,查看提交后的log信息

➜  sample git:(master) ✗ git status
On branch master
You are currently reverting commit 014305c.
  (fix conflicts and run "git revert --continue")
  (use "git revert --abort" to cancel the revert operation)

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

	both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")
➜  sample git:(master) ✗ git commit -a -m 'recover third commit'
[master 4023a1d] recover third commit
 1 file changed, 1 insertion(+), 2 deletions(-)
➜  sample git:(master) git status
On branch master
nothing to commit, working directory clean
➜  sample git:(master) git log

查看log就可以看到刚才提交的信息,同时文件的内容也时我们最终想要的。

=========END=========

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 236
博文 578
码字总数 419420
作品 0
朝阳
程序员
Git reset/revert的应用

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

秦亦辰
2017/08/15
0
0
git revert 和reset的区别

这里讲一下git revert和git reset的区别: git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假...

mingkaidox
2013/07/16
0
6
Git 技巧:恢复到前一次提交 (图示分析)

对这篇文章的试验:http://www.oschina.net/translate/git-tips-revert-with-new-commit, FYI prerequisites: git init test cd test touch first.txt git add . git commit -m "intial......

cyper
2014/03/09
0
8
git 撤销操作 git reset与git revert的使用

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

悟_空
2017/12/15
0
0
git add 命令参数详细说明

一、前言 git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。 二、基本 git add <path>表示 add to index o...

孟飞阳
2016/11/10
150
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
11
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部