.gitignore vs .gitattributes



考虑到我的.gitignore.gitattributes中都有*.pdf文件,git在这两者之间的行为和优先级如何?它是忽略pdf文件还是将其存储为LFS?

.gitignore告诉git,默认情况下,它不应该关注给定路径上的未跟踪文件。

.gitattributes告诉git修改它如何对给定路径上的文件执行某些操作(如果/当它执行所述操作时)。为了让git尝试执行这些操作,通常情况下,至少必须尝试开始跟踪文件——LFS使用的属性就是这样。

在这两种情况下,"在给定的路径上"也可以意味着"匹配给定的模式"。因此,不存在冲突或优先级;我们只需要注意每一个都意味着什么。如果将*.pdf放在.gitignore中,并使用.gitattributes设置具有LFS跟踪属性的*.pdf,则:

  • 默认情况下,git将忽略未跟踪的PDF文件。

  • 要将新的PDF文件添加到索引中,您需要使用git add -f覆盖忽略规则

  • 一旦PDF文件存在于特定路径,该路径就不再受忽略规则的控制

  • 您所添加的任何PDF文件都将由LFS根据.gitattributes进行管理

  • 任何已经在repo中的PDF文件(不受忽略规则的影响)都应该由LFS管理,但如果它是在.gitattributes条目之前提交的,则可能不是。

因此,在这个设置中,LFS充当了一个安全网,即使有人重写了忽略规则,也可以防止PDF文件破坏您的回购数据库。也许这意味着"我们确实跟踪了一两个PDF文件;但其他PDF文件可能会出现在工作树中,我们通常不想要它们。">

.gitignore忽略未跟踪的文件——那些尚未添加git add的文件;.gitattributes用于跟踪文件。也就是说,一个PDF文件可以用.gitattributes处理,另外两个可以忽略(只是一个例子)。

相关内容

  • 没有找到相关文章

最新更新