有没有办法告诉git只包含某些文件,而不是忽略某些文件?

我的程序通常会生成巨大的输出文件(〜1 GB),我不想备份到git存储库。 所以,而不是能够做到

git add . 

我必须做类似的事情

 git add *.c *.cc *.f *.F *.C *.h *.cu 

这是一个有点麻烦…

我感到相当有信心,我可以写一个快速的Perl脚本的目录内容到.gitignore,然后删除基于.gitinclude(或一些类似的名称)文件的文件,但这似乎有点太hackish。 有没有更好的办法?

我没有必要自己去尝试,但是从我阅读TFM看起来,一个否定的模式会做你想做的事情。 您可以覆盖.gitignore中的条目,以后使用否定条目。 因此,你可以做一些事情:

 *.c !frob_*.c !custom.c 

要让它忽略除custom.c之外的所有.c文件以及任何以“frob_”开头的内容

在你的仓库中创build.gitignore文件,你只想跟踪c文件,并忽略所有其他文件,然后添加以下行….

 * !*.c 

'*'将忽略所有文件

和! 将否定文件被忽略….所以这里我们要求git不要忽略c文件….

实现这一目标的最佳解决scheme

在repository root创build.gitignore文件,如果你只想包含.c文件,那么你需要在.gitignore文件

 *.* !*.c 

这将recursion地包括来自目录和子目录的所有.c文件。

运用

 * !*.c 

将无法在所有版本的git上工作。

testing

git版本2.12.2.windows.2