我想忽略没有扩展名的可执行文件
例如:
gcc -o foo foo.c
Run Code Online (Sandbox Code Playgroud)
我知道我可以在我的.gitignore文件中添加'foo',但如果我决定更改可执行文件的名称,我需要更新我的.gitignore文件...
我通常使用makefile hacks来处理这个问题.在我的Makefile中,我有可执行文件$(name)的名称,然后我这样做:
#first rule
all: gitignoreadd ... more depends
... some commands ...
gitignoreadd:
grep -v "$(name)" .gitignore > temp
echo $(name) >> temp
mv temp .gitignore
gitignoreremove:
grep -v "$(name)" .gitignore > temp
mv temp .gitignore
Run Code Online (Sandbox Code Playgroud)
那么这个规则就可以成为某个适当的make的依赖.那么你通常有一个'make clean'规则如下:
clean: gitignoreremove
rm *.o *.othergarbagefiles $(name)
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题.这是一个黑客,但它适用于我.唯一的事情是你必须在更改名称之前运行make clean以自动清理所有内容.
你可能最好手动维护gitignore.你可以这样做:
*
!*.*
Run Code Online (Sandbox Code Playgroud)
排除所有内容,然后用"."包含所有内容,但我怀疑你的目录没有扩展名.当然,当前跟踪的目录仍然会被跟踪,但是如果你添加了一个新目录,则git-status不会看到它,你必须使用add -f它来获取它.
无论如何,假设不应该跟踪所有无扩展文件可能并不好.你可能会自然而然地结束一些 - 例如,README和INSTALL非常常见.意外忽略文件比修改gitignore更糟糕.修改gitignore可能需要几秒钟,但是当你需要这样做时它会很明显.如果您不小心忽略了某个文件,则很容易无法将其检入并丢失工作.