Git revert merge

从history1分出来的A, B两个branch

A上有一些更改,例如

changeA2

changeA1

history1

B上有一些更改,例如

changeB2

changeB1

history1

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

此时想把B branch上的改动merge到A branch,于是在A branch上执行 git merge B, 执行完毕后A branch的commit记录可能如下:

merge branch ‘B‘ into A

changeA2

changeB2

changeB1

changeA1

history1

此时突然发现情况不对,想把刚才A上刚才的merge取消,遂在A上执行 git revert -m 1 <merge commit的SHA1码>,此时commit记录变成如下状态:

revert “merge branch ‘B‘ into A”

merge branch ‘B‘ into A

changeA2

changeB2

changeB1

changeA1

history1

注意,这时候如果你想再把B branch上的change merge回A上已经不可能了,当执行revert “merge branch ‘B‘ into A”的时候你告诉git不要merge B上的东西(任何基于B的branch都不能merge了),解决方法有两种:

1. 把revert “merge branch ‘B‘ into A”这个commit再revert回去,这一般不太可行,好不容易revert过来的又revert回去么?遂方法2

2. B上的change有些有用,又不想都放弃掉,此时在B上执行git reset <history1的SHA1码>, 也就是把B的头指针指到刚分出来时候的那个commit点,这时候改动还在,只不过都变成unstage状态,这时速度把不对的地方改过来,重新commit一下,此时B的commit记录变为:

NewChangeB

history1

此时再在A上merge B上的更改就可以了

时间: 2024-10-08 23:11:36

Git revert merge的相关文章

[Git] git revert ( revert commit 和 revert merge)

转载自:http://blog.csdn.net/qinjienj/article/details/7621887 我们难免会因为种种原因执行一些错误的commit / push,git提供了revert命令帮助程序员修复这样的错误. 举个例子,下图是git commit 的历史记录 git revert 命令会通过一个新的commit 来使仓库倒退一个commit,在上例中,如果程序员想要revert 最新的那次commit (Updated to Rails 2.3.2 and edge h

git revert与git reset

共同点:此次提交的代码会被退回到暂存区 不同点: git revert:撤销某次操作,用新的commit去标记旧的commit失效,即抵消操作.git log中会有一次提交的commit,有一次撤销提交的commit git reset:撤销某次提交,将HEAD回退,即删除新的commit.git log中没有新的commit 注:日后继续merge以前的老版本时,因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现.

git revert 用法

git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交    * git revert HEAD                  撤销前一次 commit    * git revert HEAD^               撤销前前一次 commit    * git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次

git revert 后悔了 还原修改前的版本 + git 常用命令

昨天手残 然后在GitHub for windows 上点了revert 然后就给重置了 更手残的是又给同步了 .  但是 GitHub 会保留之前的版本 . 只要删掉本次修改就可. 解决方案:  gitshell ->> git revert HEAD 还原已经提交的修改此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交    git revert HEAD                  撤销前一次 commit    git revert HEA

git reset、git checkout 和 git revert

一.git reset 和 git checkout git reset [commit] 重置为[commit]所对应节点的提交(通过移动分支指针和HEAD指针实现),如果不指定[commit]则默认为HEAD--soft 工作区和暂存区不变,重置仓库--mixed 工作区不变,重置暂存区和仓库,此为默认选项--hard 工作区.暂存区和仓库全部重置,修改完全丢失 git reset [commit] [file] 重置某个commit的指定文件到暂存区(指定了[file],不会移动分支指针和

git revert 让提交不再害怕

git revert 让提交不再害怕 使用了好多命令, 但对于 git revert 一直不敢怎么使用, 为什么呢? 因为 git merge 的存在. 每次 对于 git merge 的分支, 执行 git revert xxx 分支的时候总是报错. 没有细追. 今天同事恰好问道了这个问题. 于是追了一下. 主要就是对于 -m 命令. 查看了一下,其中对于 git revert -m 解释如下 -m parent-number, --mainline parent-number Usually

Git revert -m

这其实是个非常简单的指令,甚至用AS,直接右键操作不需要两秒钟 但今天使用命令行的方式操作的时候居然发现了点不一样的地方: 如下我希望revert某个commit,找到了它的id,跑一下命令之后居然发现报错了,如下 $ git revert d2e4217b332e8bf1 error: commit d2e4217b332e8bf1 is a merge but no -m option was given. fatal: revert failed 然后看了下help发现,你需要用 -m 指

代码回滚:git reset、git checkout和git revert区别和联系

git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为它们非常相似,所以我们经常会搞混,不知道什么场景下该用哪个命令.在这篇文章中,我们会比较git reset.git checkout和git revert最常见的用法.希望你在看完后能游刃有余地使用这些命令来管理你的仓库. Git仓库有三个主要组成——工作目录,缓存区和提交历史.这张图有助于理解每个

git revert

git revert git revert用来撤销一个已经提交了的快照. 但不是从项目历史中移除这个commit, 而是生成一个新的commit, 老的commit还是保留在历史项目里面的. 这样做的好处是防止了项目丢失历史. 用法 git revert <commit> 生成一个新的commit, 撤销老的<commit>的所有修改(注意了这个<commit>之后的commit的修改还在, 你只是撤销了这一个<commit>的修改), 老的commit在项