Git:如何合并一个小但很老的分支?

我们正在从SVN迁移,并且合并了一些分支。 为了大规模简化,我们有一个分支B,它在很久以前就被分叉了,并且有一点发展,比方说,修改了8个文件,数以百计。 同时,师父发生了巨大的变化:

A 
|
X---(a few changes)--- B
|
|(hundreds of changes)
|
HEAD/master 

如果我从分支中执行“git merge master”,会显示许多合并冲突,因为B和HEAD现在有很大不同。 但是,这似乎(天真地说,对我来说)是错误的:B距离后备箱不远,这只是一段很长的时间。

有没有办法利用这个事实? 我应该尝试先将B合并回X,然后再从那里加入HEAD? 什么是命令:

  • 确定版本X
  • 看到B和X之间的差异
  • 将B与X合并
  • 从新的合并版本更新到HEAD
  • 人们在这些情况下使用了另一种方法吗?

    (很可能我在前面已经说过一些非常愚蠢和不合理的东西 - 随意指出它们:))


    从B和主分离的位置创建一个新的分支“X”,然后将B合并到X中不会对您有所帮助。 这只是一个快速合并; 对于由合并B引起的矛盾,实际上并没有改变。 您唯一的选择是执行B到主控的合并并解决冲突。 冲突是他们的本质,他们无法“围绕”他们。


    如果情况很糟糕,您可能需要手动重写HEAD或至少更新版本的修补程序。 这不仅可以帮助处理冲突,还可以为您提供一个您可能会更喜欢的历史记录,同时还可以帮助您避免不属于合并冲突的错误。 由于更改下的代码更改,存在很多潜在的问题,并不是所有代码都会作为合并冲突出现。

    也就是说,如果你确实想要以合并的方式来完成它,你将不得不以这种或那种方式处理这些冲突。 你可以通过渐进式的方式减少自己的痛苦,并以较小的增量及时向前迈进。 我可以通过逐步重新设定分支来做到这一点:

    git rebase version-2 old-branch
    # deal with conflicts if they happen
    git rebase version-3 old-branch
    # and so on...
    # until old-branch is based on a recent version
    git checkout master
    git merge old-branch
    

    这将有效地让您在每一步中处理较小的更改,而不是一次处理它。

    链接地址: http://www.djcxy.com/p/10315.html

    上一篇: Git: How to merge a small, but very old branch?

    下一篇: Elastic Search and "sub queries"