git - 根据模式忽略文件

dan*_*vis 10 git

我想忽略没有扩展名的可执行文件

例如:

gcc -o foo foo.c
Run Code Online (Sandbox Code Playgroud)

我知道我可以在我的.gitignore文件中添加'foo',但如果我决定更改可执行文件的名称,我需要更新我的.gitignore文件...

Rob*_*oli 9

我通常使用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以自动清理所有内容.


Cas*_*bel 8

你可能最好手动维护gitignore.你可以这样做:

*
!*.*
Run Code Online (Sandbox Code Playgroud)

排除所有内容,然后用"."包含所有内容,但我怀疑你的目录没有扩展名.当然,当前跟踪的目录仍然会被跟踪,但是如果你添加了一个新目录,则git-status不会看到它,你必须使用add -f它来获取它.

无论如何,假设不应该跟踪所有无扩展文件可能并不好.你可能会自然而然地结束一些 - 例如,README和INSTALL非常常见.意外忽略文件比修改gitignore更糟糕.修改gitignore可能需要几秒钟,但是当你需要这样做时它会很明显.如果您不小心忽略了某个文件,则很容易无法将其检入并丢失工作.