Git 合并原始字符串的两个修改版本

Git 合并原始字符串的两个修改版本,git,version-control,diff,patch,merge-conflict-resolution,Git,Version Control,Diff,Patch,Merge Conflict Resolution,这与版本控制有关,在并行修改情况下,我们不知道更改的确切时间,因此我们假设同时收到一个文件的两个修改版本。我简化了问题: 我有一个字符串S,有两个修改版本,叫做T和U。我可以通过diff看到S和T之间的差异。让我们把T覆盖S的补丁称为PT。你也一样,我们会有PU。现在,我想以一种安全的方式将PT和PU合并到一个补丁中,能够在“字”级别(而不是典型的编程行级别)检测PT和PU之间的冲突 问题: 1-是否有这样的算法来合并两个补丁 2-如何检测T和U之间的冲突 3-处理冲突的共同政策是什么?对我来说

这与版本控制有关,在并行修改情况下,我们不知道更改的确切时间,因此我们假设同时收到一个文件的两个修改版本。我简化了问题:

我有一个字符串S,有两个修改版本,叫做T和U。我可以通过diff看到S和T之间的差异。让我们把T覆盖S的补丁称为PT。你也一样,我们会有PU。现在,我想以一种安全的方式将PT和PU合并到一个补丁中,能够在“字”级别(而不是典型的编程行级别)检测PT和PU之间的冲突

问题:

1-是否有这样的算法来合并两个补丁

2-如何检测T和U之间的冲突

3-处理冲突的共同政策是什么?对我来说,一个解决方案是总是从其中一个版本(比如T)中选择更改,以防发生冲突


有什么工具可以完成我想要的任务吗?

我想不出任何单词级的冲突解决工具。你总是比较台词


您可以为您的文件类型编写自定义驱动程序。我相信这是通过git属性实现的。在这里,如果合并是非快进合并,您可以随心所欲地执行任何操作。

我不知道有任何实现可以做到这一点,但是您可以通过使用检测和显示行内差异的合并工具获得很好的帮助。是这样一种工具。在下面的示例中,您希望合并
无符号
int n
更改。这是通过手动编辑合并输出来完成的,但该工具使此操作非常简单(到了这一点,唯一困难的部分是理解代码更改)


从理论上讲,在单词级编写冲突解决算法是不可能的吗?例如,如果我处理的是文本文档,并且对同一行进行了两次不同的修改,即使没有真正的冲突,又会怎么样?@nvd_ai-如果不可能,那么像WinDiff这样的工具就不存在了。问题是你能自己写一个吗?@Ramhound:我假设合并这个的算法已经存在,我是一个有能力实现它的开发人员。我不想重新发明轮子。如果你能为此提出一个解决方案/算法,那将更有帮助。是的。这就是我所说的情况。我想知道是否有一种算法可以正确地合并这两行,因为在单词级别,这两个修改之间没有冲突。