2

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

什么是让 git 例如仅在同一目录中才忽略文件的好方法blah.tex,并且仅在存在或在同一目录中时才blah.Rnw忽略?bluh.pdfbluh.texbluh.Rnw

4

3 回答 3

7

几个简单的解决方案:

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

退房gitignore(5)

于 2013-03-21T18:59:38.330 回答
0

你不能用.gitignore. 您需要将生成的文件和用户文件拆分到单独的文件夹中,并忽略整个生成的文件夹。

于 2013-03-21T18:22:22.050 回答
0

看看您是否可以将生成的文件放在一个特殊的文件夹中,比如tmp。然后你可以在 .gitignore 中添加这个文件夹

温度/

于 2013-03-21T18:22:33.387 回答