2010-08-30 68 views
8

比方說,我的存儲庫根目錄中有一個.noise文件。該文件經常被我的團隊中的其他人修改並提交給遠程回購。忽略已存在於回購協議中的文件而不刪除它們

我想完全忽略這個文件,而我自己提交任何東西,但我仍然想從其他人提交更改,並且我不想刪除該文件。如果我使用.git/info/exclude,那麼我必須git rm --cached該文件,所以它不會顯示在回購。

現在這樣做,讓我從:

# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .noise 
# 
# No changes added to commit (use "git add" and/or "git commit -a") 

到:

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: .noise 
# 

的 '變更,必須致力於' 讓我害怕。我不想將.noise刪除回到遠程,我不希望它在我的filessytem上被刪除。我只是不希望Git看到或與它有任何關係。我想到git rm --cached不應該改變?那不是嗎?

任何想法?

+0

是否自己更改這個文件?你想在你的工作樹中看到這個文件的遠程更改嗎? – Shcheklein 2010-08-30 20:55:18

回答

14

您可以使用:

$ git update-index --assume-unchanged -- .noise 

update-index --assume-unchanged將Git的繼續追蹤文件,但更改將不會體現在指數或加入到回購。

+0

據我所知,這種方式將工作,如果該文件將實際上沒有改變。 Git將無法以某種方式提交修改該文件的提交:「如果需要在索引中修改此文件(例如合併提交時),Git將失敗(正常);因此,如果假設未跟蹤文件在上游發生更改,你需要手動處理這種情況。「 (見git-update-index(1)) – Shcheklein 2010-08-30 22:32:07

+0

'git update-index --assume-unchanged'是我前一陣子試過的。沒有效果! 添加' - .noise'似乎就這樣做了。 現在很有趣,因爲我認爲update-index基本上是通過再次查找更改的目錄循環。我不知道它必須在單個文件上調用。謝謝。 – 2010-08-30 22:32:34

+0

@Shcheklein「Git將無法以某種方式提交修改此文件的提交」那麼也許這不是最終的全部解決方案。我將不得不測試並驗證遠程提交是否被撤銷。 – 2010-08-30 22:34:31

相關問題