【发布时间】:2020-03-12 17:58:15
【问题描述】:
这是我的情况:
├── (c0) ── (c1) ── (c2-merge-commit) ── (b0)── (b1-merge-commit)
我想将 c0、c1 和 c2 合并到一个提交中并有这个:
├──(压扁:c0,c1,c2-merge-commit)──(b0)──(b1-merge-commit)
所以我把我的 HEAD 带到 c2,然后回到 c0 并 squash 合并到 c2 (HEAD@{1})
git merge --squash HEAD@{1}
这部分进行得很好,我有:
├──(压扁:c0,c1,c2)
现在我需要添加 2 个提交 (b0) 和 (b1-merge-commit)。我使用了cherry-pick,但在那种情况下我需要解决b0的冲突。但我不想再次解决冲突,因为我实际上是使用 (b1-merge-commit) 解决的。
作为一种解决方案;我首先将 b0 和 b1 压缩为新的提交;然后在上面挑选这个(压扁:c0、c1、c2)。但显然,如果我将 +10 次提交压缩到过去,并且有如此多的合并提交飞来飞去,那么这个解决方案显然无法扩展。
TLDR: 我想在我的分支上进行两次提交;其中之一是具有冲突的实际更改(b0),另一个是实际解决冲突的合并提交。当我一一挑选时,git 要求我处理 b0 的冲突,其中冲突实际上通过 b1 上的合并提交解决。我只能设法将 b0 和 b1 压缩到一个新的提交中,然后在我的分支上挑选它。
【问题讨论】:
标签: merge git-merge cherry-pick git-cherry-pick