2009-10-21 58 views
10

我想忽略不具有擴展名混帳 - 忽略基於模式

例如可執行文件的文件:

gcc -o foo foo.c 

我知道我可以添加「富」到我的.gitignore文件,但如果我決定更改可執行文件的名稱,我需要更新我的.gitignore文件...

+0

你不能忽略基於模式(權限)的文件,但Jefromi說你可以忽略所有文件,但那些有擴展名的文件。 –

回答

8

對於您來說手動維護gitignore可能是最好的了。你可以這樣做:

* 
!*.* 

排除一切,然後用「。當然,目前跟蹤的目錄仍然會被跟蹤,但是如果您添加了新目錄,git-status就不會看到它,並且您必須使用add -f才能使其進入。

這可能並不好無論如何,不​​應該追蹤擴展少的文件。您可能最終會遇到一些自然現象 - 例如,README和INSTALL很常見。意外忽略文件比不得不修改gitignore更糟糕。修改gitignore可能需要幾秒鐘的時間,但是當你需要這樣做的時候它會很明顯。如果你不小心忽略了一個文件,你很容易就無法檢查並丟失工作。

10

我通常使用makefile hack處理這個問題。在我的Makefile中,我有可執行$(名稱)的名稱,然後我這樣做:

#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 

這條規則可以就做適當的地方化妝的依賴。然後你通常有一個'乾淨'的規則如下:

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

這應該有所斬斷。這是一種黑客攻擊,但它對我很有用。唯一的是你必須在更改名稱之前運行make clean以自動清理所有內容。