文档章节

git revert

秋风醉了
 秋风醉了
发布于 2015/08/25 12:01
字数 691
阅读 1273
收藏 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=========

© 著作权归作者所有

共有 人打赏支持
上一篇: Linux命令——mv
下一篇: git reset
秋风醉了
粉丝 239
博文 572
码字总数 416654
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部