3 回答

TA貢獻1831條經驗 獲得超4個贊
可能導致此行為的問題有多個:
行結束規范化
我也遇到過這類問題。它歸結為git自動將crlf轉換為lf。這通常是由單個文件中的混合行結尾引起的。該文件在索引中被規范化,但是當git再次對其進行非規范化以將其與工作樹中的文件區分開來時,結果是不同的。
但是,如果要解決此問題,則應禁用core.autocrlf,將所有行結尾更改為lf,然后再次啟用它?;蛘吣梢酝ㄟ^執行以下操作完全禁用它:
git config --global core.autocrlf false
您也可以考慮使用文件而不是core.autocrlf.gitattribute
。這樣,您可以確保使用repo的每個人都使用相同的規范化規則,從而防止混合行結尾進入存儲庫。
還要考慮設置core.safecrlf來警告你是否希望git在執行不可逆的規范化時發出警告。
git 聯機幫助說:
CRLF轉換有可能破壞數據。autocrlf = true將在提交期間將CRLF轉換為LF,在結賬時將LF轉換為CRLF。無法通過git重新創建在提交之前包含LF和CRLF混合的文件。對于文本文件,這是正確的做法:它校正行結尾,這樣我們在存儲庫中只有LF行結尾。但對于意外歸類為文本的二進制文件,轉換可能會破壞數據。
不區分大小寫的文件系統
在不區分大小寫的文件系統上,當存儲庫中存在具有不同大小的相同文件名時,git會嘗試檢出兩者,但只有一個文件系統最終結束。當git嘗試比較第二個時,它會將它與錯誤的文件進行比較。
解決方案是切換到不區分大小寫的文件系統,但在大多數情況下這是不可行的,或者重命名并在另一個文件系統上提交其中一個文件。

TA貢獻1784條經驗 獲得超8個贊
我在Windows上遇到了這個問題,但是我沒有準備好調查使用的后果config --global core.autocrlf false
我也不準備放棄我的藏品中的其他私人分支和好東西,并從一個新的克隆開始。我只需要完成一些事情。現在。
這對我有用,因為你讓git完全重寫你的工作目錄:
git rm --cached -r .git reset --hard
(請注意,在原始問題的評論中建議之前,運行只是git reset --hard
不夠好,也沒有明確rm
的文件reset
)

TA貢獻2051條經驗 獲得超10個贊
另一個可能對人有用的解決方案,因為沒有一個文本選項適合我:
用
.gitattributes
一行替換內容:* binary
。這告訴git將每個文件視為二進制文件,它無法執行任何操作。檢查違規文件的消息是否消失; 如果不是,你可以
git checkout -- <files>
將它們恢復到存儲庫版本git checkout -- .gitattributes
將.gitattributes
文件恢復到其初始狀態檢查文件是否仍未標記為已更改。
- 3 回答
- 0 關注
- 1903 瀏覽
添加回答
舉報