git - 在子模块中使用 .gitattributes 作为合并策略
问题描述
我有两个主要分支,它们有一个子模块,但指向该子模块的两个不同分支。
我想要的是在两个主要分支之间合并/变基时忽略任何子模块更改。
我试图用来.gitattributes
忽略子模块(名为internal
)的任何合并冲突。
目前我有internal merge=ours
,.gitattributes
但它不工作,它无法合并internal
子模块。
还有其他合并策略可以满足我的需求吗?或者我在使用中做错了.gitattributes
什么?
解决方案
子模块作为gitlink条目记录在超级项目中。gitlink 存储了超级项目 Git 将用于命令子模块 Git 到子模块git checkout
中的原始哈希 ID。(除了 gitlink,您还需要.gitmodules
文件内容来提供初始克隆所需的附加信息,但是一旦发生克隆,这些详细信息就会从.gitmodules
文件移动到您的超级项目的配置中。因此.gitmodules
内容变得无关紧要:只有 gitlink 重要.)
合并驱动程序告诉 Git 如何合并文件。gitlink 条目不是文件,因此合并驱动程序在此处无效。当 Git 合并三个提交时——合并基础和两个分支提示——并且合并基础和两个分支提示都有不同的哈希 ID 存储在 gitlink 中,您将遇到合并冲突,并且您所做的任何事情都不会自动解决它. 您必须手动解决它。