2010-04-20 59 views
4

有沒有辦法讓git status忽略文件中的某些更改?git status:如何忽略一些變化

背景

我在我的倉庫是自動生成的(是的,我知道這是通常不推薦的,但我沒有能力改變這一點)的一些文件。每當我構建樹時,這些自動生成的文件都會更新狀態信息(生成它們的人,時間戳等)。

當我說git status,我希望它對這些生成的文件運行一個過濾器,去除這個瞬態狀態信息。如果還有其他真實的變化,我只希望它出現在git輸出的"Changed but not updated:"部分。

使用在https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes找到的.gitattributes方法,我可以通過使用簡單的egrep過濾器讓git diff忽略這些狀態行更改。我希望git status也可以使用textconv過濾器(或其他類似的東西)。

我更喜歡它,如果合併不受任何此過濾的影響。

回答

0

我想我會按照我一直在使用的兩種解決方法報到:從自動生成的文件

  • 刪除的狀態信息。
  • 有一個更新腳本,它執行git checkout origin ...作爲構建的一部分,用於任何沒有語義更改的生成文件。
1

您也可以使用過濾器來隱藏您對git的更改。指定「清理」過濾器,它將「清除」不必要的更改(將Git的文件版本提供給Git),以便它不會看到更改(但仍可以列出「git status」中的文件)。

詳情:Better way of making Git to turn a blind eye on my changes

也看其他回答這個問題,他們也即將忽視的變化。

1

一個簡單的解決方案是,在文件名或路徑運行以下命令要忽略的變化:如果你想開始跟蹤變化再次運行以下命令

git update-index --assume-unchanged <file> 

git update-index --no-assume-unchanged <file> 

您將不得不記得在有想要提交的更改時再次開始跟蹤。

+0

感謝您的建議;不幸的是,我不想完全忽略這些文件。我只想忽略文件中的某些類型的更改。 – 2014-01-30 18:13:58