让git忽略生成的文件

时间:2013-03-21 18:16:07

标签: git

我有几个项目有大量文件,处理后会生成其他文件。事实上,没有必要跟踪生成的文件,在某些情况下,您不希望跟踪它们,因为这会浪费空间。我理解这是.gitignore文件的用途。问题是,我找不到在文件上使用模式匹配的好方法,因为reps还包含符合相同模式的常规用户编辑文件。例如,repo将包含许多用户编辑的.tex个文件,但也包含由knitr form .tex文件生成的许多.Rnw个文件。大多数.pdf文件是从.tex文件自动生成的,但有些是用户创建的.pdf数字,这些数据将包含在TeX文档中,应该被跟踪。

只有在同一目录中存在blah.tex时,使用git的好方法才会忽略文件blah.Rnw,并且只有bluh.pdf才会忽略bluh.tex 1}}或bluh.Rnw在同一目录中?

3 个答案:

答案 0 :(得分:7)

几个简单的解决方案:

  • 将所有后缀(例如.pdf)添加到.gitignore *.pdf,将git add -f添加到版本version-this-one.pdfgit将跟踪那些(需要一点关心)。 *.pdf实际上是一个glob,所以你可以排除那些hames以大写字母[A-Z]*.pdf开头的PDF。
  • 如上所述,但添加例如*.pdf用于所有PDF,!version-this-one.pdf从排除的集合中排除一个(此处也可以使用模式)
  • 将生成的文件的完整列表添加到.gitignore。需要保持最新(不是太糟糕,如果出现新的,git会认为它没有跟踪,只需添加它)。
  • 混合搭配:根据需要使用上述方法获取不同的文件名模式
  • 每个目录.gitignoregit首先在此目录的.gitignore中搜索,如果在父目录中找不到,... ...因为您可以使用!排除模式,在那里停止搜索。

结帐gitignore(5)

答案 1 :(得分:0)

.gitignore无法做到这一点。您需要将生成的文件和用户文件拆分为单独的文件夹,并忽略整个生成的文件夹。

答案 2 :(得分:0)

查看是否可以将生成的文件放在特殊文件夹中,如 tmp 。 然后你可以在.gitignore

中添加这个文件夹

TMP /