GIT 定义简单的冲突解决策略

GIT define simple conflict-resolving strategy

我遇到了这样一种情况,开发人员在他们自己的分支上将修改一个文件——这是一种自动生成的全局文件。

问题是,这种自动生成每次都会在文件末尾发生。因此,远程仓库中的文件如下所示:

this is first line.

那么,两个不同分支上的两个开发人员可能会:

this is first line.
this was added by developer A.

this is first line.
this was added by developer B.

就是这样。很明显,合并的时候会有冲突。

但解决方法很简单:总是取一侧,然后是另一侧(顺序无关紧要),因此有效结果可能是:

this is first line.
this was added by developer B.
this was added by developer A.

以及

this is first line.
this was added by developer A.
this was added by developer B.

这是因为生成的部分是完全相互独立的,所以我们只是希望它们像这样合并。

但是,尽管如此,在合并时我们总是必须手动进行合并,这在日常工作中并不是那么舒服。

有没有办法在 GIT 中设置“在特定文件中合并冲突的默认方式”?

我试图使用 git rerere 但它是基于上下文的,不幸的是它随着每次提交而改变。所以它不能自动解决此类冲突。

我也无法与 strategy-option 合并,因为我无法将其设置为混合(仅限我的或他们的 chagnes)。并且必须针对一个特定文件手动完成。

那么最好的方法是什么?

上下文:

非常简单,我需要一个 class 那个 returns 字符串和特定于语言环境的字符串。所以我需要像这样的静态属性:

public static string HelloWorld => _locale == "SPAIN" ? "Hola mundo" : "Hello world";

当区域设置为“SPAIN”时,它只针对 return 西班牙语版本的字符串,对于其他区域设置为英语版本。

我有工具,我可以在其中键入 属性 名称和翻译(该工具可帮助我查找重复的名称、建议翻译等)。之后,它会自动定义 属性 。但是生成的属性总是在文件的末尾,因此很容易发生冲突。

创建一个包含以下内容的 .gitattributes 文件:

myfile.md merge=union

(显然使用正确的文件名:如果您在问题中包含一个文件名通常会很有帮助,以便回答的人可以参考它)