永发信息网

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

答案:2  悬赏:50  手机版
解决时间 2021-11-30 14:43
  • 提问者网友:浪荡绅士
  • 2021-11-30 00:01
Git怎样撤销一次分支的合并Merge
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-11-30 00:59
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 -> ShowHistory
点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:
Revert
按钮,也就是个紫色的弯曲的小箭头就回去了。
全部回答
  • 1楼网友:执傲
  • 2021-11-30 01:21
git reset --hard 重置头指针。一般来说,在 master 上直接执行
git reset --hard HEAD~
也可以回到合并之前的提交,但
git reset --hard
命令还是使用确定的 commit 为好。注意,
git reset --hard
命令有风险,除非十分确定要放弃当前提交,否则最好先git branch为当前的提交建立个新的分支引用后再继续,待确定无误后删除即可。
如果错误的合并之后又有了新的提交,可以在完成前述正确的合并之后,通过
git rebase --onto <错误的合并提交 <正确的合并提交 <新提交所在分支
来在正确的合并提交上重建新的提交。
git rebase --onto
命令所重建的提交序列最好是线性的,否则非线性的提交会变成线性的。若需要保存非线性的提交历史,可以考虑使用
参数,不过结果很不可靠,具体视提交的非线性程度而定。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯