当且仅当另一个文件存在时,如何告诉git忽略某个文件?

Ren*_*let 9 git gitignore

我想告诉git忽略一个名为foo.extif 的文件,并且仅当存在另一个名为的文件时foo.txe.我几乎可以肯定这不能通过.gitignore语法来完成,但是我可能还有其他一些棘手的方法吗?

使用示例:我经常将LaTeX文档的图形存储在名为的子目录中figures.我通常用Xfig设计我的数字.我的makefile调用fig2devfigures/foo.fig源生成一对文件:

  • figures/foo.pdf,图形部分的PDF文件,
  • figures/foo.pdf_t,一个文本的LaTeX文件,带有includegraphics包含PDF 的命令.

因为生成了这两个文件,我想git忽略它们.我可以在我的.gitignore文件中添加两个简单的排除模式,但也有一些我的数字是纯PDF,而不是从其他来源生成.当然,我不想git忽略这些figures/bar.pdf文件.

我想补充一下:

/\(**\)/figures/\(*\).fig: /\1/figures/\2.pdf /\1/figures/\2.pdf_t
Run Code Online (Sandbox Code Playgroud)

我的.gitignore文件,这意味着任何文件命名/<some_path>/figures/<some_name>.pdf/<some_path>/figures/<some_name>.pdf_t当且仅当一个文件名为应该被忽略/<some_path>/figures/<some_name>.fig使用相同的存在<some_path><some_name>.

小智 3

您将需要使用文件名或文件夹中的某些内容来确定哪些文件是自动生成的,哪些不是。根据您的代码设置方式,您可以根据文件夹忽略。例如,用于figure-auto自动生成的文件和figure手动创建的文件。

figure-auto/

如果您只有几个不想忽略的文件,可以使用

figures/*.pdf
figures/*.pdf_t
!figures/keep-in-source-control.pdf
!figures/manually-created.pdf
Run Code Online (Sandbox Code Playgroud)

Git 忽略模式格式