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

时间:2015-09-16 13:07:22

标签: git gitignore

当且仅当存在另一个名为git的文件时,我想告诉foo.ext忽略名为foo.txe的文件。我几乎可以肯定使用.gitignore语法无法做到这一点,但我可能还有其他一些棘手的方法吗?

使用示例:我经常将LaTeX文档的图形存储在名为figures的子目录中。我通常用Xfig设计我的数字。我的makefile调用fig2dev来生成来自figures/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

到我的.gitignore文件,这意味着当且仅当名为/<some_path>/figures/<some_name>.pdf的文件存在相同{{1}时,才会忽略任何名为/<some_path>/figures/<some_name>.pdf_t/<some_path>/figures/<some_name>.fig的文件}和<some_path>

1 个答案:

答案 0 :(得分:2)

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

figure-auto/

如果你只有一些你不想忽视的文件,你可以使用

figures/*.pdf
figures/*.pdf_t
!figures/keep-in-source-control.pdf
!figures/manually-created.pdf

Git Ignore Pattern Format