问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Git怎样撤销一次分支的合并Merge

发布网友 发布时间:2022-04-23 04:15

我来回答

3个回答

热心网友 时间:2022-06-09 19:47

由于太多人问怎么撤销 merge 了,于是 git 官方出了这份教程,表示在 git 现有的思想体系下怎么达到撤销 merge 的目标。
方法一,reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去:
$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】

方法二,当 merge 以后还有别的操作和改动时,git 正好也有办法能撤销 merge,用 git revert:
$ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
1 files changed, 0 insertions(+), 2 deletions(-)

这样会创建新的 commit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示:
Already up-to-date.

因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。
方法三,怎么撤销方法二:
$ git revert 【方法二撤销merge时提交的commit的版本号,这里是88edd6d】
Finished one revert.
[master 268e243] Revert "Revert "Merge branch 'jk/post-checkout'""
1 files changed, 2 insertions(+), 0 deletions(-)

这样就行了,可以正常 merge 了,不过可能会有很多冲突噢!!
$ git merge jk/post-checkout
Auto-merging test.txt
Merge made by recursive.
test.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

最后的最后,还是觉得顶上那些都麻烦爆了。前端天天用 WebStorm 写代码的看过来: WebStorm 右键点击项目文件或文件夹,有一个:
Local History -> Show History
点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:
Revert
按钮,也就是个紫色的弯曲的小箭头就回去了。在文件量不大的时候十分管用,强烈推荐

热心网友 时间:2022-06-09 19:47

如果确定放弃这次合并的提交,假如是 merge 了错误的分支到 master,先通过git reflog或者 gitg、gitk、qgit 等工具确定你 merge 之前 master 所在的 commit,然后在 master 分支上使用
git reset --hard <commit
重置头指针。一般来说,在 master 上直接执行
git reset --hard HEAD~
也可以回到合并之前的提交,但
git reset --hard
命令还是使用确定的 commit 为好。注意,
git reset --hard
命令有风险,除非十分确定要放弃当前提交,否则最好先git branch为当前的提交建立个新的分支引用后再继续,待确定无误后删除即可。
如果错误的合并之后又有了新的提交,可以在完成前述正确的合并之后,通过
git rebase --onto <错误的合并提交 <正确的合并提交 <新提交所在分支
来在正确的合并提交上重建新的提交。
git rebase --onto
命令所重建的提交序列最好是线性的,否则非线性的提交会变成线性的。若需要保存非线性的提交历史,可以考虑使用
参数,不过结果很不可靠,具体视提交的非线性程度而定。

热心网友 时间:2022-06-09 19:48

直接co回退不就可以吗。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通事故致人死亡,该如何处理? 爱普生LQ1600KIIIH 断色带 爱普生针式打印机LQ1600KⅢH近两月来总频繁中断打印,同时电脑显示是通讯... ACQUA DI PARMA 帕尔玛之水 蓝色地中海系列 桃金娘加州桂中性淡香水 E... 女士香水推荐-ACQUA DI PARMA 帕尔玛之水 优雅木兰女士浓香水 EDP 50... ACQUA DI PARMA帕尔玛之水克罗尼亚系列中性香水套装-适用对象 帕尔玛 | 必须拥有的小众沙龙香 ACQUA DI PARMA/帕尔玛之水克罗尼亚系列黑调男士古龙水-适用对象 ACQUA DI PARMA 帕尔玛之水 克罗尼亚系列 风度中性古龙水 EDC 20ml... ACQUA DI PARMA/帕尔玛之水-绅士男士古龙水EDC 为什么输入法无法切换 git删除分支后,会对该分支上的标签有影响吗? 如何处理Git中放弃了的分支而不删之 用键盘不能切换输入法怎么办 git怎样回退到上一个 git,本地仓库分支下的一个项目文件夹被误删了,怎么办,在线等。。。。 请问小米贷款还款日没有自动扣款应该怎么解决呢? 使用vscode中的git不小心删除文件,怎么恢复 小米贷款怎么扣款? git恢复到没有分支的状态 小米借贷逾期无法手动还货,如何手动还款 git 恢复一个被删除的文件,本地已经删除很久了,而且不知道commit_id ,只记得文件名 这小米贷款怎么看怎么还钱 git如何撤销删除的远程分支20170819 14:29 小米贷款怎么还? 如何找回git 中丢失的提交 如何恢复 git reset 小米贷款软件里面的马上金融消失了,如何还款啊,自动还款吗 如何恢复git reset Mac如何恢复git数据 我的电脑的输入法不能切换,怎么办? 输入法无法切换怎么办? 手机做的有用分期逾期不还会上征信吗 进入游戏输入法不能切换怎么办 有用分期可会上征信?我预期了一次会不会上征信? ctrl+shift不能切换输入法怎么办 有用分期不还会上征信吗 有用分期逾期不还会上门和上征信吗 我的输入法无法切换了?怎么回事请教高人 开通花呗、使用花呗、准时分期还款,会上国家征信系统吗? 当电脑的输入法无法切换时该怎么办? 我在有用分期。,逾期三天,现在还清了。-,会上征信吗? 我的电脑输入法不能切换,该怎么办? 有用分期倒闭了吗? 有用分期有上征信吗 有用分期还有三个月没还上不上征信了 有用分期上不上征信 请问一下花呗上不上征信啊,我一直在用分期买东西,刚刚又用了600? 有用分期上征信吗,不还钱有什么后果 有用分期查征信吗