3 回答

TA貢獻1853條經驗 獲得超18個贊
這些討論中經常沒有提到的一個問題:如果您在Windows上開發shell腳本(例如在cygwin中)并使用CRLF提交它們(autocrlf = false),它們將在* nix框上崩潰,并顯示無用的錯誤消息。(其他腳本語言可能也有類似情況。)撓了半個小時之后,您會記住,然后dos2unix小麻煩。如果您在混合環境中工作(例如,從Windows部署到linux服務器),并且您絕對希望將autocrlf設置為false,那么請確保所有Windows編輯器都使用unix(lf)行結尾。否則將autocrlf設置為輸入(并祈禱)。大多數21世紀Windows程序在沒有1980年代早期的行式打印機CR的情況下都很舒適,因此,將行尾設置為LF(unix)是一個好主意。

TA貢獻1810條經驗 獲得超5個贊
對于二進制文本表示形式中具有相同文本但行尾(EOL)機制不同的兩個文本文件,GIT不會具有通用的SHA1 。內容存儲為Blob,如果將另一個相同的副本存儲到存儲庫中,則將重復使用該內容(節省空間?。?/p>
GIT(設計者)的默認選擇是盡可能使用* nix樣式的EOL字符(僅LF),以便對于相同的文本內容,您具有相同的SHA1。(可能是重要的考慮因素;-)
因為內容/ blob不再記住用戶的原始EOL選擇(記住現在可能在某個遙遠的存儲庫中),所以Git必須對如何重新創建原始用戶的文件(是CRLF還是簡單地)做出一些猜測(基于選項)。 LF)以您(和您的工具)可以使用的方式使用。
通常的建議是,每個用戶在本地(a)提交到Blob時都轉換為* nix LF結尾(因此所有人都會看到通用的SHA1 Blob名稱)(a / k / a Right Thing),而(b)在本地設置重新創建其本地系統設置的選項,例如* nix(LF)或Windows(CRLF)等。
為您的用戶設置一些本地標準,并進行一次大的“ EOL / LF / CRLF和空格校正提交”,就可以了(加上對新用戶的培訓再培訓)
您還可以確保您(每個用戶)使用通用的空格調整設置,以使制表符v空格和結尾的空格不會造成更多的diff
不便!
- 3 回答
- 0 關注
- 571 瀏覽
添加回答
舉報