在子模块中使用.gitattributes作为合并策略

时间:2019-07-09 11:23:45

标签: git gitattributes

我有两个主要分支,每个分支都有一个子模块,但指向该子模块的两个不同分支。

我想要的是在两个主要分支之间合并/变基时忽略任何子模块更改。

我正在尝试使用.gitattributes忽略子模块(名为internal)的任何合并冲突。

当前我在internal merge=ours中有.gitattributes,但是它不起作用,它无法合并internal子模块。

还有其他可以满足我需要的合并策略吗?还是我在.gitattributes用法上做错了什么?

1 个答案:

答案 0 :(得分:1)

子模块作为 gitlink 条目记录在超级项目中。 gitlink存储原始哈希ID,超级项目Git将使用该哈希哈希命令将子模块Git指令到子模块中的git checkout。 (除了gitlink之外,您还需要.gitmodules文件内容来提供初始克隆所需的其他信息,但是一旦发生克隆,这些详细信息就会从.gitmodules文件转移到您的超级项目的配置中。因此.gitmodules的内容变得无关紧要:只有gitlink很重要。)

合并驱动程序告诉Git如何合并文件。 gitlink条目不是文件,因此合并驱动程序在这里无效。当Git合并三个提交(合并基础和两个分支提示)以及合并基础和两个分支提示都在gitlink中存储了不同的哈希ID时,您将遇到合并冲突,并且您所做的任何操作都不会自动解决它。您必须手动解决它。