合并压缩提交后出现的Git冲突

4

我有一个主分支和一个开发分支。

master: A--B--C

dev: A--B--C--D--E

我想发布 D 和 E,因此我从主分支 master 创建了一个 release-1.0 分支,将 dev 合并到 release-1.0 并进行压缩合并。

release-1.0: A--B--C--F(D&E)

我发布后,将release-1.0合并到主分支master。

master: A--B--C--F(D&E)

然后我会在开发环境上继续我的新更改。

dev: A--B--C--D--E--G--H

当我从主分支创建 release-2.0 并将 dev 合并到它时,就会发生冲突。

这是我遇到的问题。我意识到这不是使用合并压缩的正确方式,我进行了一些搜索,但没有找到一个好的解决方案。


1
有没有一种方法可以告诉 Git DE Squash 到 F,这样下次合并时就将它们视为相同的呢? - yukuan
1个回答

3

我建议只在devmaster之间使用常规合并。如果你真的想压缩(commit squash), 你可以为此创建一个feature分支,然后在完成后将其压缩到dev中。

关于当前的情况,你可以像这样将dev提交GH变基(rebase)到master:

git checkout dev
git rebase --onto master <E commit hash>

这是最终的结果:
* dbd43d8 (HEAD -> dev) H
* c203a3d G
* 39a258a (master) F(D&E)
* 538454c C
* 8aa2e42 B
* 2f3facb A

那么你可以直接快进合并 master 分支。


是的,我明白这是使用合并压缩的正确方式。但如果我确实需要从dev到master进行压缩合并,我在想是否有更好的处理方法,而不是解决冲突。 - yukuan
更新了我的回答。 - WofWca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接