为什么 .gitattributes 仅应用于定义后添加到存储库的文件?

为什么 .gitattributes 仅应用于定义后添加到存储库的文件?

在我的存储库中,我正在实施一个新的有趣策略来保留一些版本化文件以防止合并,该策略使用自定义合并驱动程序和 .gitattributes。请看一下:

http://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Merge-Strategies

但我注意到,如果我将其应用于已在存储库/分支中跟踪的文件,则它不起作用。为了使其工作,我必须在将文件添加到存储库/分支之前定义 .gitattributes 中的路径,或者删除文件并再次添加它们。

不是一个大问题,但我很好奇这种行为的原因。有人知道吗?

答案1

根据我的经验,通常不会追溯地将规则应用于存储库中已有的文件。当您尝试忽略具有某种模式的文件时,git您在这里看到的同样的事情也会发生。mercurial

正如我所看到的,WRT 忽略文件的优点是,它可以通过手动添加需要包含的文件来轻松覆盖标准规则。

对于更改合并策略,一次性更改所有文件可能会有一些优势,我不确定为什么git会强制您删除并重新添加文件,而不是使用某种强制选项来应用此选项(或者也许有,但我没有)我在丛林中找到了它,称为 git 文档)。

相关内容