我在bitbucket.org上有一個git庫,方便我在單位和家裡的機子上同步程式碼,但是每次從伺服器上拉下來程式碼都會出現很多修改,重新clone也不行,用檔案比較工具查看也沒有看到修改。
懷疑是line endings的問題,把git重新安裝了下,選擇了checkout what,commit what那個選項,仍然不行,求解釋求指導,謝謝 o(╯□╰)o
-----補充----
現在確定是line endings問題了,下面是commit的log,一滿屏,都是這樣的。怎麼設定?需要重新安裝還是修改配置?
另外這個問題是什麼原因導致的呢?我兩台機子上設定的一樣呀,難道是伺服器給轉了?
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in src/Presentation.Seedwork/Resources/Mess
ages.Designer.cs.
The file 將 have its original line endings in your working directory.
37 files changed, 3234 insertions(+), 3234 deletions(-)
phpcn_u15822017-04-25 09:05:49
試試在你本地的repo上設定一下
git config core.filemode false
git config core.eol lf
我想大声告诉你2017-04-25 09:05:49
根據你的描述,看起來你公司和你家裡用的是不同的作業系統,所以換行符的差異會讓 Git 認為檔案的內容改變了。這個是可以設定成讓 Git 智慧幫你轉換的:
在 Windows 系統下,安裝 Git 時應當置選項 core.autocrlf
为 true
,也就是下圖所示的那一個:
在 Linux/Unix/Mac 系統下,一般來說保持預設值就好了(沒有安裝介面供選擇)。當然你可以手工編輯 ~/.gitconfig
设 core.autocrlf
为 input
,如我機器上的設定:
以上兩種設定最終的結果就是提交的時候 Git 總是將換行符自動轉為 LF
,并且在 Windows 下 checkout
回来时自动帮你转换为 CRLF
,以便適應 Windows 下的編輯器。
如果你做了上述設定依然會碰到題目中描述的問題,那麼不用想,一定是你的團隊中另外有別的成員沒有做對以上兩點的設定(很大的可能性是使用Windows 的),你們可以逐一檢查。
另外,安裝 Windows Git 時另外一個設定也比較讓人費解,建議選下圖這樣的:
選擇這種,所需的配置量最少,CLI 和 Linux 的兼容性也比較高,唯一的缺陷就是 Windows CLI 里和 Linux 重名的命令會被 Linux 版本覆蓋掉,比如 find
之類的。在我看來,反正 Windows CLI 是個渣渣,覆蓋了也無所謂了。