2012-10-16 37 views
75

我有同樣的問題,因爲這個職位 - git update-index --assume-unchanged returns error ,但我不明白的答案標記爲正確的(我沒有看到它解釋瞭如何解決的情況)的git更新索引--assume-不變回報「致命無法標記文件」

我做到這一點,得到這個錯誤:

$ git update-index --assume-unchanged web.config 
fatal: Unable to mark file web.config 
  1. 將文件添加到資料庫
  2. 它不是在git的/信息/排除
  3. 它不是的.gitignore(是的,但我把它,然後用力 web.config中使用Git添加-f web.config中添加,COMMITED和 推動這些變化對回購)
  4. 時我做git ls-files -o它不存在

那麼我能做些什麼來解決?

+0

重新閱讀引用問題中的接受答案:它不應出現在'git ls-files -o'的輸出中。如果是這樣,它不在回購。 – eckes

+0

我的排字錯誤,它不在列表中,它絕對是在回購 – Karen

回答

64

我和你有同樣的問題,並且遵循了上面指出的相同的四個步驟,並得到了相同的結果。這包括我執行git ls-files -o時列出的文件。但是在我的情況下,我還嘗試對執行ls-files -o時未列出的文件執行git update-index --assume-unchanged,並且我仍收到相同的錯誤「fatal: Unable to mark file」。

我以爲這可能是一個bug,並下載了最新版本的git,但這並沒有幫助。

我終於意識到的是,這個命令是區分大小寫的!這包括完整路徑和文件名。更新路徑到目錄以便完整的路徑被指定爲正確的外殼後,該命令正確執行。

請注意,這是用於Windows的Git,所以您的結果可能因其他平臺而異。

+4

謝謝SOOOO多!這工作!我想我之前使用的都是小寫字母,或者cd到文件夾,然後嘗試使用此命令。 – Karen

+0

如果文件會改變,那麼這是錯誤的。該命令是用戶對Git的承諾,它不必浪費週期來指示文件檢測文件是否已更改(對於慢速文件系統;-)。最終會有一個Git命令會被注意到,你會感到驚訝。正在更新文檔以澄清這一點。 –

+0

謝謝,這間接地幫助我發現了一個項目中的一些不好的shell腳本。如果路徑不存在,這將失敗! :) – uchuugaka

1

如果您的路徑有空格,即使您有套管權限,也可能會出現此錯誤。

這將導致「致命」錯誤:

git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json 

爲了解決這個問題,只需添加路徑周圍的報價。

git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json" 
+0

在我的情況下,我有/倒退。 –

32

我在Mac上遇到同樣的問題。區分大小寫是不是我的問題 - 這個問題是我需要先重置我的git:

問題:

git update-index --assume-unchanged index.php 
fatal: Unable to mark file index.php 

解決方案:

git reset HEAD 
Unstaged changes after reset: 
M index.php 
git update-index --assume-unchanged index.php 
+0

我在Mac上遇到了同樣的問題,並且沒有任何建議的解決方法適用於我。任何想法?我正試圖在我的機器上暫時停止跟蹤目錄,目錄名稱爲intellij_idea_project_files /。顯然這個目錄中的所有文件都被正確標記,除了一個,那就是my_project_name.iml。 – Metallica

+1

這是爲我工作的答案。謝謝 –

+1

復位完成了,謝謝! – Daneo

1

我的問題是,我假設它是遞歸的,用*通配符嘗試命令,但事實並非如此。

所以我所做的就是

$ git reset HEAD 
Unstaged changes after reset: 
M .gradle/1.9/taskArtifacts/cache.properties.lock 
M .gradle/1.9/taskArtifacts/fileHashes.bin 
M .gradle/1.9/taskArtifacts/fileSnapshots.bin 
M .gradle/1.9/taskArtifacts/outputFileStates.bin 
M .gradle/1.9/taskArtifacts/taskArtifacts.bin 

執行

$ git update-index --assume-unchanged .gradle/1.9/taskArtifacts/* 

工作對我來說則並沒有導致OP和我的問題。

3

--assume-unchanged是關於緩慢的文件系統,並且用戶承諾Git不需要檢查此文件,因爲Git可以假定它不變。但有些命令仍然會檢查併產生「驚喜」!

請勿使用更改的文件。

對不起,這個消息的使者(我有一個補丁正在修改該文檔)。

+1

那麼人們應該如何更新一個文件來標記爲「不跟蹤我」? – javadba

+0

@javadba請參閱http://stackoverflow.com/a/6964492/717355'git rm --cached文件名' –

+0

thx - upvoted on:我實際上在發佈後使​​用它。作品。 – javadba

1

確保已簽入「web.config」。

如果不是,您將收到此錯誤消息。

2

我試圖解開* .orig文件時遇到了這個問題。

這是我做給他們untrack:

$git reset -- *.orig 

如果不工作:

$git clean -fd 
4

致命的:無法標記文件本地化/ EL-GR.js

你可以做的是 1-移動到你的本地文件存在的正確路徑(在GITBASH中) 2- $ git update-index --assume-unchanged

這幫了我! :)

+0

'$ git update-index --assume-unchanged ./.idea/vcs.xml fatal:無法標記文件.idea/vcs.xml' '$ cd .idea' 'git update-index --assume - 不變。「 工作過,謝謝! – AVProgrammer

1

確保該文件被添加到git repo,如果沒有添加文件在git repo然後嘗試它將工作。

+0

閱讀這個問題,該文件被添加到存儲庫 – Karen

5

在我的情況下,我標記的樹是一個目錄,而不是你的情況下的文件,並且我錯過了它的名字後面的斜線。

錯誤 -

git update-index --assume-unchanged directory-name 

正確 -

git update-index --assume-unchanged directory-name/ 

到底斜槓(/)。

1

也許對某人有用。 我有同樣的問題,並沒有語法問題,沒有空格名稱,沒有路徑問題,和git重置命令不起作用。我從apache的www文件夾中提交併停止了apache服務。再次啓動apache服務,錯誤消失

0

對於所有未來的訪問者。以上都沒有解決我的問題。 我意識到的是.gitignore文件必須放在正確的目錄中。就我而言,一旦我將.gitignore移動到應用程序的根目錄,問題就解決了。

相關問題