git - 根据模式忽略文件

时间:2009-10-21 21:11:44

标签: git

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

例如:

gcc -o foo foo.c

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

2 个答案:

答案 0 :(得分: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

那个规则可以只是某个地方适当的依赖。那么你通常有一个'make clean'规则如下:

clean: gitignoreremove
   rm *.o *.othergarbagefiles $(name)

这应该可以解决问题。这是一个黑客,但它适用于我。唯一的事情是你必须在更改名称之前运行make clean以自动清理所有内容。

答案 1 :(得分:8)

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

*
!*.*

排除所有内容,然后用“。”包含所有内容,但我怀疑你的目录没有扩展名。当然,当前仍会跟踪当前跟踪的目录,但如果您添加了新目录,则git-status将无法看到它,您必须使用add -f才能将其获取。

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