2010-10-11 85 views
0

拉出後,git狀態告訴我,我已經更改了一個16Mb的xml文件。git內存錯誤?無法檢出/重置/撤銷更改

我沒有碰過這個文件;但是EOL問題可能導致git的困惑(儘管我認爲不是因爲我有autocrlf = input)。

但我寫,因爲我無法擺脫這個東西。

我曾嘗試每個以下的:

  1. GIT中的復位 - 硬HEAD
  2. git的結帳 - 衍生的/工作流/ XML/definitions.xml中
  3. GIT中藏匿節省

在每個這些之後,git狀態告訴我:

# 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: derived/workflow/xml/definitions.xml 

這是一個問題,因爲我不能 「藏匿流行」 之後,(甚至馬上上述第3項之後,做一個 'git的藏匿處保存' 後)

環境

  • 的Windows XP
  • Cygwin的Git的1.7.1

一些問題

  • 由於這個大文件的大小,git會無聲無息地失敗嗎? (早些時候我簡要地看到git在內存問題上失敗)
  • 我該如何解決這個問題?

感謝

+1

怎麼樣'autocrlf'設置爲'FALSE'? http://stackoverflow.com/questions/3858931/git-convert-carriage-return-r-to-new-line-n-with-git-hook/3858971#3858971 – VonC 2010-10-12 04:10:17

回答

2

在這種情況下,問題源於我的「autocrlf」設置爲「輸入」。

無論好壞,我們的構建過程都會生成帶有「CRLF」行結尾的xml文件。

「git status」必須與「autocrlf」結合使用。雖然我沒有觸碰或編輯文件,但是「git status」必須說「當你提交這個文件時,git將不得不修改它,所以我會正確報告 - 現在修改」。

「解決方案」是關閉autocrlf。

由於沒有autocrlf,git的狀態返回 「正確的事」

+0

我也可能建議修復你的構建過程。 :-) – ebneter 2010-10-25 19:06:57

1

我遇到了類似的問題,這是由於文件名的情況。在存儲庫中,有一個名爲file.txt的文件,另一個名爲File.txt(或其他僅由大小寫區分的名稱)。 Git並沒有期待這一點,在檢查非區分大小寫的文件系統(Mac OS X)時,我遇到了同樣的問題。

我最終的解決方案是完全排除包含該結帳文件的目錄。在這種情況下,我不需要那個目錄,這很幸運。