git 主分支回退后无法 merge 问题

2020-09-18 12:19:21 +08:00
 wuwukai007
分支 A merge 了分支 B,
然后 master 合并了分支 A,
现在回退了主分支合并的分支 A,
然后在主分支上合并分之 B,提示无需合并,已在之前合并,卡在这了,现在怎么将分支 b 合并到主分支呢?
2692 次点击
所在节点    Python
11 条回复
wjidea
2020-09-18 12:27:11 +08:00
可以试一下 cherry-pick ?
rrfeng
2020-09-18 12:33:03 +08:00
revert revert 就行
Hieast
2020-09-18 12:56:12 +08:00
不保留 master 历史的话可以直接把 master reset 到合并 A 之前的那个版本,再 merge B,个人开发者这么干很爽。
calmzhu
2020-09-18 13:05:12 +08:00
怎么回退的
wuwukai007
2020-09-18 13:10:34 +08:00
@calmzhu gitdesktop 客户端里面点了 revert 回退的
ypcs03
2020-09-18 13:27:33 +08:00
在 b 分支 rebase 主分之再 merge 试试
calmzhu
2020-09-18 14:09:37 +08:00
revert 不行的,revert 的意思就是 commit 一个反内容的提交。所以对于 master 来说是



A1 A2 A3 ---MergeB
/插入 master
master1 --> Merge A ---> MergeB(只是内容为取消 MergeA)

所以这时候 A 的 commit 信息是在 master 的。

要么 reset master 到 master1

或者直接从 master1 checkout 一个新的 branch 用来 mergeB 就可以了
moonrailgun
2020-09-18 14:13:18 +08:00
其实 2 楼正解

你 revert
我 revert 你的 revert
way2explore2
2020-09-18 15:14:18 +08:00
1. revert-revert
2. on master, hard reset to (before merge A), then merge B

I usually use 2
baiyi
2020-09-18 15:33:31 +08:00
revert 是提交了一个反提交,所以你的历史中分支 B 已经合并了。

可以直接 reset 到合并之前,然后 merge B 。
networm
2020-09-25 15:19:02 +08:00
Git 通过节点的依赖关系决定是否合并,通过合并提交自身的所有文件改动来引入要合并分支的改动。

以 master 合并 A 分支前的提交新建分支 X,合并 B 分支(这样可以正确得到所有 B 分支的改动)
然后 master 分支再合并这个新建的分支 X,把 B 分支的改动带到 master 分支。

这种方法类似 @way2explore2 的第二种做法,但是不丢失 master 合并 A 分支后的所有提交及改动。

可以尝试一下,理论上可行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX