我的程序通常会生成巨大的输出文件(〜1 GB),我不想备份到git存储库。因此,而不是能够做
git add .
我必须做类似的事情
git add *.c *.cc *.f *.F *.C *.h *.cu
这有点麻烦...
我非常有信心,我可以将快速的perl脚本ls目录内容写入.gitignore,然后根据.gitinclude(或类似名称)文件删除文件,但这似乎有点过于骇人听闻。有没有更好的办法?
我的程序通常会生成巨大的输出文件(〜1 GB),我不想备份到git存储库。因此,而不是能够做
git add .
我必须做类似的事情
git add *.c *.cc *.f *.F *.C *.h *.cu
这有点麻烦...
我非常有信心,我可以将快速的perl脚本ls目录内容写入.gitignore,然后根据.gitinclude(或类似名称)文件删除文件,但这似乎有点过于骇人听闻。有没有更好的办法?
Answers:
我不需要自己尝试一下,但是从我对TFM的阅读中可以看出,否定的模式可以满足您的要求。您可以使用稍后否定的条目覆盖.gitignore中的条目。因此,您可以执行以下操作:
*.c
!frob_*.c
!custom.c
要使它忽略除custom.c以外的所有.c文件以及以“ frob_”开头的任何文件
在您的存储库中创建.gitignore文件,并且您只想跟踪c文件并忽略所有其他文件,然后向其中添加以下行...。
*
!*.c
'*'将忽略所有文件
和!将否定文件被忽略....所以在这里,我们要求git不要忽略c文件...。
.*
隐藏文件吗?
*
即使对于.
,该也是通配符,因此隐藏文件也将被忽略,但是所有以结尾的隐藏文件.c
都将包括在内。
*
之后 !.bash*
是.gitignore文件
*.*
在Windows上-查看@Smaranjit Maiti的回答
实现这一目标的最佳解决方案
.gitignore
在存储库中创建文件root
,如果只想包含.c
文件,则需要在.gitignore
文件中添加以下几行
*.*
!*.c
这将.c
递归包括目录和子目录中的所有文件。
使用
*
!*.c
不适用于所有版本的git。
经过测试
git版本2.12.2.windows.2
*
,必须使用*.*
。这是在Windows上使用gitbash和git版本2.9.0.windows.1
如果您需要忽略文件而不是目录中的特定文件,请按以下步骤操作:
# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt