2015-06-03 44 views
0

當我在我的回購中籤出特定提交併立即執行 git status時,有一個文件顯示爲已更改。如果我查看 SHA作爲我的工作副本和index/repo中的副本,它們確實不同於 。工作副本有回車,雖然我 嫌疑人在索引/回購中的副本沒有他們,回購SHA的輸出 從git cat-file確實有他們。實際上,如果我將該輸出重定向到一個文件並執行該文件的git hash-object,則我得到與工作副本相同的SHA。Git - 檢查出提交時工作目錄中的自動「更改」

對文件做一個git checkout沒有改變,即它仍然標記爲git status已更改。試圖檢出另一個提交 失敗,因爲我對該文件的「更改」將被 結帳覆蓋。在文件上執行git diff不會返回任何內容。

該回購有一個.gitattributes文件,其始於* text=auto !eol。回購中的每個文件都明確列在.gitattributes-text,之外的文件具有自發的「變化」。在我的機器上,core.autocrlf是錯誤的。

這是在Windows上運行。 Git版本是1.9.5.msysgit.1。

有人知道這裏可能會發生什麼嗎?這幾乎就好像git 在結帳時將CR添加到文件中,但在決定是否存在本地更改時並未「意識到」 。

感謝您的任何見解。

回答

1

好的,所以我很確定我有這個想法。與我的看法相反,在回購did文件中有其中有CR,因此完全等於我的工作副本。但是,由於在.gitattributes中指定了* text = auto,所以「乾淨」版本git status使用將剝離它的CR,即在提交時。所以,git認爲這些文件是不同的。

一個有趣的事情要注意的是,雖然我能夠在.gitattributes使用* text = auto測試庫重現此,我重現它,如果我沒有這一行,即使設置core.autocrlf爲真。文件意味着行爲應該是相同的,但顯然不是這種情況。

相關問題