Merge 合并到DVCS中

Merge 合并到DVCS中,merge,diff,dvcs,Merge,Diff,Dvcs,对于我的一个应用程序,我正在考虑实施分支/合并。我不明白在某些情况下如何合并而不发生冲突。让我们以这个为例 Root编写一些代码。A、 B和C从他身上抽离并添加了特征。C这样做,A和B从中拉/合并。我相信它是通过使用root作为基础将自己的代码与C代码进行比较来实现的。现在A和B编写更多功能并完成 如果我从A拉,然后从B拉,会发生什么?它们的基础是根,它们都是从C中提取的,因此编辑相同的行。它如何知道这是否是冲突?如果我编辑一行C写的,然后从B拉出来呢?我想那将是一场冲突。现在我的最后一个问题是

对于我的一个应用程序,我正在考虑实施分支/合并。我不明白在某些情况下如何合并而不发生冲突。让我们以这个为例

Root编写一些代码。A、 B和C从他身上抽离并添加了特征。C这样做,A和B从中拉/合并。我相信它是通过使用root作为基础将自己的代码与C代码进行比较来实现的。现在A和B编写更多功能并完成

如果我从A拉,然后从B拉,会发生什么?它们的基础是根,它们都是从C中提取的,因此编辑相同的行。它如何知道这是否是冲突?如果我编辑一行C写的,然后从B拉出来呢?我想那将是一场冲突。现在我的最后一个问题是,如果A和B在从C中拉出函数后洗牌函数的位置,会发生什么?我想现在可以归结为dif识别有多好,但我不确定如何从A和B中提取而不产生冲突

有时,如果A和B编辑相同的行(不同),就会产生冲突。然后,您需要通过检查更改来手动合并更改(可能还需要与A和B对话!),而不是依赖DVC来为您合并

您还可能会遇到逻辑冲突(A和B更改文件的不同部分,因此没有明显的冲突,DVC可以处理合并,但这些部分打破了彼此的假设,因此引入了错误)。版本控制无法解决此问题,只能解决开发人员之间的通信和单元测试。

有时,如果A和B编辑相同的行(不同),则会出现冲突。然后,您需要通过检查更改来手动合并更改(可能还需要与A和B对话!),而不是依赖DVC来为您合并

您还可能会遇到逻辑冲突(A和B更改文件的不同部分,因此没有明显的冲突,DVC可以处理合并,但这些部分打破了彼此的假设,因此引入了错误)。版本控制无法解决这一问题,只有开发人员之间的通信和单元测试

它如何知道这是否是冲突

  • 或者是因为DVCS会告诉您:如果编辑相同的行,它将触发合并的手动解析
  • 或者因为你:
    • 充分了解代码以发现语义冲突
    • 有一个扩展的单元测试电池,它将清除语义冲突
但正如“”的评论中所述,定期提交和合并(以比CVCS、集中式版本控制系统快得多的速度)是避免逻辑冲突或使其尽可能小的关键。
有关语义冲突的更多信息,请参见此

它如何知道这是否是冲突

  • 或者是因为DVCS会告诉您:如果编辑相同的行,它将触发合并的手动解析
  • 或者因为你:
    • 充分了解代码以发现语义冲突
    • 有一个扩展的单元测试电池,它将清除语义冲突
但正如“”的评论中所述,定期提交和合并(以比CVCS、集中式版本控制系统快得多的速度)是避免逻辑冲突或使其尽可能小的关键。
有关语义冲突的更多信息,请参见此