文档章节

git revert

秋风醉了
 秋风醉了
发布于 2015/08/25 12:01
字数 691
阅读 1064
收藏 3
点赞 0
评论 0

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=========

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 223
博文 581
码字总数 411013
作品 0
东城
程序员
Git reset/revert的应用

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

秦亦辰 ⋅ 2017/08/15 ⋅ 0

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 ⋅ 8

git revert 和reset的区别

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

mingkaidox ⋅ 2013/07/16 ⋅ 6

git 撤销操作 git reset与git revert的使用

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

悟_空 ⋅ 2017/12/15 ⋅ 0

git add 命令参数详细说明

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

孟飞阳 ⋅ 2016/11/10 ⋅ 0

Git 版本回退和撤销修改

版本回退 soft:git reset –soft HEAD^ 将版本库回退一个版本,且这次提交的所有文件都移动到暂存区 mixed(默认):git reset HEAD^ 将版本库回退一个版本,且这次提交的所有文件都移动到工...

hobhunter ⋅ 03/06 ⋅ 0

git解决错误提交分支

说明:带括号的都是错误的commit,m1是merge提交,每个数字代表commit和commit号需要放到develop分支 我的做法(目前看来没问题,不确定是否正确): 此时,分支状态是: 然后将错误提交应用...

kidou ⋅ 03/08 ⋅ 0

iOS:Git分布式版本控制器系统

Git的使用 1、Git简介: Git是一个开源的分布式版本控制系统。与SVN、CVS相比 分布式 不需要中心仓库 Git的版本号都是生成的一个哈希值,比如:bbaf6fb5060b4875b18ff9ff637ce118256d6f20 性...

吞吞吐吐的 ⋅ 2017/09/13 ⋅ 0

git使用问题,输入命令后进入编辑状态!

输入命令:$ git branch --remot origin/HEAD -> origin/master origin/jordan's-branch origin/master origin/revert-2-jordan's-branch origin/revert-4-test-branch origin/test-branch 输......

qinjordan ⋅ 2016/01/22 ⋅ 0

记一次git误操作恢复全过程

我们团队使用git flow方式,和此次误操作有关的有3个分支:develop、feature/discuss和feature/search,两个feature分支都是从develop分支上拉出来的,feature/discuss先从develop分支拉出来...

leo108 ⋅ 2014/10/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Netweaver和SAP云平台的quota管理

Netweaver 以需要为一个用户上下文(User Context)能够在SAP extended memory区域中分配内存尺寸创建quota为例。 对于Dialog工作进程,使用事务码修改参数 ztta/roll_extension_dia. 对于非D...

JerryWang_SAP ⋅ 23分钟前 ⋅ 0

IDEA提示编码速度

焦点移动 将焦点冲代码编辑窗口移动到菜单栏:Alt+菜单栏带下划线字母 将焦点从工具窗口移动到代码编辑窗口 Esc或Shift+Esc 将焦点从代码编辑移动到最近使用的工具窗口 F12 模板提示 Ctrl+J...

bithup ⋅ 32分钟前 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 56分钟前 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 今天 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 今天 ⋅ 0

python3.6 安装pyhook_3

我的是在win下的,忙了半天老是安装不了, pip install 也不行。 那么可以看出自己的版本是32bit 一脸懵逼 没办法 只好下载32版本的来安装 我一直以为 是 对应32 位的 。 下面是 小例子 http...

之渊 ⋅ 今天 ⋅ 0

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~...

北岩 ⋅ 今天 ⋅ 0

CentOS7 静默安装 Oracle 12c

环境 CentOS7.5 最小安装 数据库软件 linuxx64_12201_database.zip 操作系统配置 关闭 SELinux sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config 关闭防火墙 systemctl disable ......

Colben ⋅ 今天 ⋅ 0

Yii2中findAll()的正确使用姿势/返回为空的处理办法

从一次错误的操作开始 $buildingObject = Building::findAll("status=1"); 1 这个调用看着没有任何毛病,但是在使用时返回的结果却是一个空数组。再回过头来看看数据表中: 按照套路来讲,查...

dragon_tech ⋅ 今天 ⋅ 0

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部