能否在第4步合并而不发生冲突?
把分支1的提交'E'从分支1合并到分支2。
branch1 : A - B - C - D - E
\
branch2 : F - G - E(cherry-pick from 1)
提交的内容被添加到 branch2
branch1 : A - B - C - D - E
\
branch2 : F - G - E - H - I
重构交互式和压制提交,因为它们是同一个问题的解决方案。
(现在,我认为这是一个错误的决定......)
branch1 : A - B - C - D - E
\
branch2 : F - G - I'
再把被压扁的提交挑到分支1......
(如果把提交的H,I挑到分支1会不会更好?)
branch1 : A - B - C - D - E - I'(conflict?)
\
branch2 : F - G - I'
这是一个有趣的问题,但除非你提供实际的 git 仓库,以便检查变化集,否则没有人能够提供明确的答案。
事实上,合并冲突与提交 H 和 I 是被单独挑选出来的,还是被一起重构的无关。事实上,E 也被压扁了 可能 是一个因素。
不过更重要的是,这个问题的前提有一个小问题。"是否可以将 畅通?" 为什么这个合并要在没有冲突的情况下进行?有冲突可能是正确的,也是合适的。
当git说 "有冲突 "时,并不意味着 "你搞砸了,这些不能合并"。而是意味着 "我(git)搞不清楚这些改动应该如何合并。我需要人类的帮助。"
这里有一个解决方案:找一些好的diffmerge软件(我在Windows上使用P4Merge,但有很多选择)。检查每一个相关提交的内容。了解冲突是什么(很可能是H或我修改了E中的一行,也可能是H和我依赖于F或G中已经做出的修改)。解决每一个冲突:这可能意味着保留原来的行,或者保留较新的行,或者以一种新的方式修改行,将两个分支的变化都纳入其中--这完全取决于上下文。
不要害怕与团队成员协商解决冲突--你有可能会决定他们的一些工作是否会被删除。