我已经在本地主题分支上工作了一段时间,不时只进行一些更改。
与此同时,主分支已经发生了显着变化。我决定将主分支中的新更改合并到我的本地主题分支中(与我分支的原始主提交相比几乎没有任何变化):
git fetch
git checkout my_branch
git merge origin/master
然后git警告我:
请输入提交消息以解释为何需要此合并, 特别是如果它将更新的上游合并到主题分支中。
这让我很好奇。为什么警告?我应该做一个 rebase 吗?还是 cherry-pick ?除此之外,我如何在我的案例中使用rebase或者Cherry-pick?
答案 0 :(得分:6)
git的核心维护者已经对这个确切消息的措辞进行了一些讨论,因为你是对的,但不是很清楚。
puppet labs编程指南提供了一个很好的解释,说明为什么这不是最理想的,并提供了一个更优选的解决方法:
应该在主题分支上完成工作,并使用no-ff合并。这样做的原因是git历史变得更加清晰。主题分支组相关提交很好,并且使用no-ff进行合并可以保留历史记录中的分组。
如果可以避免,请不要将上游分支合并到主题分支中。虽然这是解决上游分支中的开发和开发之间冲突的一种方法,但它会导致不洁的历史记录 - 尤其是在合并提交中进行代码更改时,这些代码更改非常难以使用。
如果你必须适应外部变化,我们宁愿你将你的分支机构与上游分开,这样我们就不会遇到这种混乱。