考虑到我的*.pdf
和.gitignore
都有.gitattributes
个文件,git如何表现并优先考虑两者?它是否忽略pdf文件或将它们存储为LFS?
答案 0 :(得分:6)
.gitignore
告诉git默认情况下它不应该关注给定路径上未跟踪的文件。
.gitattributes
告诉git修改它在给定路径上的文件上执行某些操作(如果/何时执行所述操作)的方式。为了让git尝试执行这些操作,通常你至少必须尝试开始跟踪文件 - 当然LFS使用的属性就是这种情况。
在这两种情况下,“在给定路径上”也可以表示“匹配给定模式”。所以没有冲突或优先次序;我们只需要注意每一个意味着什么。如果您将*.pdf
放入.gitignore
,并使用.gitattributes
设置*.pdf
并使用LFS跟踪属性,则:
默认情况下,git会忽略未跟踪的PDF文件。
要向索引添加新的PDF文件,您可以使用git add -f
一旦PDF文件存在于特定路径,该路径就不再受忽略规则的约束
您 添加的任何PDF文件都将由LFS根据.gitattributes
任何已存在于repo中的PDF文件(不受忽略规则影响)应该由LFS管理,但如果它是在.gitattributes
条目之前提交的话可能不是。
因此,在此设置中,LFS充当安全网,以防止PDF文件炸毁您的repo数据库,即使有人覆盖了忽略规则。也许这意味着“我们确实有一两个PDF文件跟踪;但其他PDF文件可能出现在工作树中,我们通常不希望它们。”
答案 1 :(得分:1)
.gitignore
忽略未跟踪文件 - 那些尚未添加git add
的文件; .gitattributes
用于跟踪文件。也就是说,一个PDF文件可以用.gitattributes
处理,另外两个可以忽略(仅举例)。