【问题标题】:How to tell git to ignore a certain file if and only if another file exists?当且仅当另一个文件存在时,如何告诉 git 忽略某个文件?
【发布时间】:2015-09-16 13:07:21
【问题描述】:

我想告诉git 忽略名为foo.ext 的文件,当且仅当存在另一个名为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

到我的.gitignore 文件,这意味着当且仅当存在具有相同<some_path><some_name> 的名为/<some_path>/figures/<some_name>.fig 的文件时,应忽略任何名为/<some_path>/figures/<some_name>.pdf/<some_path>/figures/<some_name>.pdf_t 的文件。

【问题讨论】:

标签: git gitignore


【解决方案1】:

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

figure-auto/

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

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

Git Ignore Pattern Format

【讨论】:

  • 我知道如何使用.gitignore,这不是我想要的,但谢谢,感谢您的帮助。
猜你喜欢
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 2010-11-19
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多