2011-12-22 34 views
16

git update-index --assume-unchanged <filename>返回fatal: Unable to mark file <filename>git update-index --assume-unchanged返回錯誤

我需要做些什麼來解決這個問題?它在抱怨什麼?爲什麼?

+2

你知道了嗎?讓我知道,所以我可以更新與你發生的事情有關的答案。 – 2011-12-23 05:08:20

回答

12

是否將其添加到存儲庫中,而不是.git/info/exclude而不是.gitignore

如果對其中任何一個的答案是肯定的,那麼該文件不在存儲庫中,這就是錯誤的原因。

嘗試git ls-files -o並查看該文件是否存在。它不應該。

+0

如果你的文件被暫存,你仍然會得到同樣的錯誤,所以你可能需要首先執行'git reset HEAD '。 – DavidJ 2013-08-08 17:29:47

3

您正在運行git update-index --assume-unchanged,因爲您的文件已選中到存儲庫中,但您希望忽略本地編輯。

正如佩德羅指出的那樣,給您錯誤的文件沒有簽入存儲庫。 (它顯示了在git ls-files -o這意味着它是未經跟蹤。)

這可能會約,因爲你想遞歸地忽略整個目錄,像這樣:

find ./folder/ -type f | xargs git update-index --assume-unchanged 

但是,不僅是該文件夾中的文件修改,新的文件已經創建。 (例如,通過一個構建腳本)

如果你要忽略所有修改過的文件一定,你可以用這個命令這樣做:

git ls-files -m | xargs git update-index --assume-unchanged 

但要小心。 請注意,與--assume-unchanged混淆可能會很痛苦。

考慮重新處理一些事情,以便這些文件根本不需要放入回購站。然後,您可以將它們添加到您的.gitignore,並使用git rm --cached將其從存儲庫中刪除。

如果您可以將文件同時保存在repo和用戶工作目錄中,那可能是理想的選擇。例如,如果文件是作爲構建的一部分創建的,則可以創建一個靜態庫,而不是讓每個開發人員在本地運行構建過程。