Git 正在将43个提交从主节点合并到功能分支中”;“更难”;而不是以另一种方式合并1提交?

Git 正在将43个提交从主节点合并到功能分支中”;“更难”;而不是以另一种方式合并1提交?,git,Git,场景:我有一个功能分支(我们称之为feature),它在上个月已经过时了。同时,我已经向主分支提交了43个提交。功能分支只有一个提交在该点偏离主分支。现在我想继续使用该功能,但是应用了最新的主分支更改。我有几个选择: 将主分支合并到功能分支(43次提交) 在master提示中打开一个新分支feature continued,并在此处合并feature(1提交) 将功能重设为主功能提示(43次提交) 有什么理由选择一个而不是另一个吗?我担心的是 哪一个提供了最好的工作流程 使合并冲突的可能性最小(

场景:我有一个功能分支(我们称之为
feature
),它在上个月已经过时了。同时,我已经向
主分支提交了43个提交。
功能
分支只有一个提交在该点偏离主分支。现在我想继续使用该功能,但是应用了最新的主分支更改。我有几个选择:

  • 主分支
    合并到
    功能
    分支(43次提交)
  • master
    提示中打开一个新分支
    feature continued
    ,并在此处合并
    feature
    (1提交)
  • 功能
    重设为
    主功能
    提示(43次提交)
  • 有什么理由选择一个而不是另一个吗?我担心的是

  • 哪一个提供了最好的工作流程
  • 使合并冲突的可能性最小(如果有差异)
  • 哪一项对回购规模和复杂性的影响最小(如有差异)

  • 方法1和3给人的印象是,这些是“更难”的操作。这些构成了更大的变化。还有更多的承诺等。真的吗?我们不是在所有情况下都在做同样的事情吗?合并两个分支?

    这是一个系统哲学的问题,但对我来说,唯一的方法是将
    功能重新设置到
    主功能上。让我们来看看另外两个选项:

  • 如果将
    master
    合并到
    feature
    中,将创建一个包含以前所有43次提交的合并提交。如果随后将
    功能
    合并回
    主分支
    中,这将在主分支中创建一个历史记录,充其量只能让人困惑
  • 你可以创建一个新的分支,但我认为这是一个不干净的工作流。此外,合并一个提交可能会导致与重基相同的冲突 现在,让我们分析选项3以了解您的顾虑:

  • 我认为很明显,你会有一个干净的工作流程
  • A将自分支以来的所有提交视为一个更改,并将其用作比较。rebase尝试在新的基础上重复单个提交的更改。在您的情况下,您可以相互比较相同的状态(因为您希望将
    master
    合并到
    feature
    ,而不是相反)。无论如何,通过重新基准,您将尝试将较小的更改“合并”到较大的更改中。这将使可能的冲突更容易解决
  • 没有增加复杂性,因为之后仍然有一个分支和一个提交

  • 就我个人而言,我会选择3,因为这可能会导致一个更干净的历史。我真的不认为这些行动比其他行动更“困难”。正如你所说,从解决冲突的角度来看,它们几乎是等价的。但如果我将两个分支(或只有一个分支?)都推到中央回购,你就不能重新设定基准,对吗?我刚意识到我有。@Nilzor你不能给你推的树枝重新定基。但你可以在中央回购中删除你的
    功能
    分支,并在重新基准后再次推送它。您还应该确保没有其他团队成员拥有本地副本。@Nilzor当然可以,但这有点复杂,因为您必须删除中央回购的历史记录。重要的是,对于其他人正在处理的分支,您不会“重写历史”(git rebase就是这么做的)。您是否有任何证据或理由支持您关于选项1更容易发生冲突的说法?你不是以两种方式合并相同的更改吗?同样的道理,你说的重新基址会减少冲突(特别是在这种情况下,只有一次提交)。@Ajedi32刚刚注意到我自己;-)我的编辑有意义吗?我不确定。我明白你凭直觉可能会认为将一个较大的变更集合并成一个较小的变更集会导致比另一种方式更多的冲突,但这真的与git的观点不同吗?@AJED32从普通git的角度看:不!但根据我的经验,如果右边的变化较小,合并工具似乎表现得更好:-)对关注点3-回购规模有何评论?一个比另一个重要吗?