我的程序通常会生成巨大的输出文件(~1 GB),我不想备份到 git 存储库。所以,而不是能够做
git add .
我必须做类似的事情
git add *.c *.cc *.f *.F *.C *.h *.cu
这有点麻烦......
我相当有信心我可以编写一个快速的 perl 脚本 ls 将目录内容放入 .gitignore ,然后删除基于 .gitinclude (或类似名称)文件的文件,但这似乎有点太老套了。有没有更好的办法?
我自己不需要尝试这个,但从我对TFM的阅读来看,它看起来像一个否定模式会做你想要的。您可以使用以后否定的条目覆盖 .gitignore 中的条目。因此,您可以执行以下操作:
*.c
!frob_*.c
!custom.c
让它忽略除 custom.c 和任何以“frob_”开头的所有 .c 文件
在您的存储库中创建 .gitignore 文件,并且您只想跟踪 c 文件并忽略所有其他文件,然后将以下行添加到其中...。
*
!*.c
'*' 将忽略所有文件
和 !将否定文件将被忽略....所以在这里我们要求 git 不要忽略 c 文件....
实现这一目标的最佳解决方案
在存储库中创建.gitignore
文件root
,如果您只想包含.c
文件,则需要在.gitignore
文件中添加以下行
*.*
!*.c
这将.c
递归地包括目录和子目录中的所有文件。
使用
*
!*.c
不适用于所有版本的 git。
经测试
git 版本 2.12.2.windows.2
如果您需要忽略文件而不是目录中的特定文件,我是这样做的:
# 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
聚会迟到了,但我的解决方案是为源文件设置一个目录,为可执行文件和程序输出设置一个不同的目录,如下所示:
+ .git
| (...)
+ bin
| my_exe.exe
| my_output.txt
+ src
some_file.c
some_file.h
...然后只将这些东西添加src/
到我的存储库中并完全忽略bin/
。
如果你只是想包含点文件,这对我有用......
!.*