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