2012-05-25 176 views
112

我在存儲庫中有一些跟蹤的文件,這些文件在構建代碼時會自動修改。我不想解開它們,我只是不希望它們顯示爲已修改,並且我不希望它們在我添加git時被暫存。Git:忽略跟蹤的文件

這可能嗎?

+5

的可能重複的[GIT中:ⅰ可以提交一個文件,並忽略含量的變化?](http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-內容更改) –

+3

如果這些文件由構建自動生成**,則不應在git中對其進行跟蹤。 –

+0

下面是關於gitignore的一個快速教程,您可能會發現它很有用:https://learningpassion.wordpress.com/2016/06/17/git-tutorial-day-to-day-use-part-4-gitignore-diff-and -difftools-moving-and-removing-files/ – joker

回答

159

當然。

git update-index --assume-unchanged file 

要撤消並重新開始跟蹤:使用

git update-index --no-assume-unchanged [<file> ...] 
+1

如果我對它們進行修改,這種狀態下的文件會發生什麼? – haymansfield

+1

@haymansfield該命令的幫助頁面指出,如果需要在索引中修改此文件,以下Git將失敗(優雅),例如合併時提交;因此,在案件的假設未跟蹤文件被改變後的上行,則需要處理manually.''' – Parham

+1

@Parham的情況,documenation現在被改爲對--assume-不變標誌的意圖更加清晰由於用戶的誤解。在Git中,丟失數據將不太合理,因此保存數據的額外對象被認爲是「優雅的」。該報價將改變。 –

1

的另一種解決方案GIT中的屬性和%F在過濾器命令:

git config filter.orig.clean "cat %f.orig" 
cp filename filename.orig 
echo "filename filter=orig" >> .git/info/attributes 
echo "filename.orig" >> .git/info/exclude 
+4

你能否提供更多細節,說明這意味着什麼以及偶然做什麼? – rogerdpack

2

另一種方法是保持一個 「跟蹤」模板文件,然後有它的本地副本未追蹤,例如:https://gist.github.com/canton7/1423106

再就是如果該文件在git中更改等,並且可以在本地未跟蹤文件上使用.gitignore(最後),則不會有任何顧慮。

+5

這個答案其實最初是由Seth Robertson發起的,但是它被一個主持人刪除*沒有評論*(什麼?),所以在這裏復活了。親愛的mods:如果你想單方面刪除答案,請提供一個理由這樣做... – rogerdpack