搜尋

首頁  >  問答  >  主體

windows平台git每次都會出現莫名其妙的許多changs,但是對比後又沒有發現不同

我在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(-)

大家讲道理大家讲道理2775 天前930

全部回覆(3)我來回復

  • phpcn_u1582

    phpcn_u15822017-04-25 09:05:49

    試試在你本地的repo上設定一下

    git config core.filemode false
    git config core.eol lf
    

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-25 09:05:49

    根據你的描述,看起來你公司和你家裡用的是不同的作業系統,所以換行符的差異會讓 Git 認為檔案的內容改變了。這個是可以設定成讓 Git 智慧幫你轉換的:

    1. 在 Windows 系統下,安裝 Git 時應當置選項 core.autocrlftrue,也就是下圖所示的那一個:

    2. 在 Linux/Unix/Mac 系統下,一般來說保持預設值就好了(沒有安裝介面供選擇)。當然你可以手工編輯 ~/.gitconfigcore.autocrlfinput,如我機器上的設定:

    以上兩種設定最終的結果就是提交的時候 Git 總是將換行符自動轉為 LF,并且在 Windows 下 checkout 回来时自动帮你转换为 CRLF,以便適應 Windows 下的編輯器。

    如果你做了上述設定依然會碰到題目中描述的問題,那麼不用想,一定是你的團隊中另外有別的成員沒有做對以上兩點的設定(很大的可能性是使用Windows 的),你們可以逐一檢查。

    另外,安裝 Windows Git 時另外一個設定也比較讓人費解,建議選下圖這樣的:

    選擇這種,所需的配置量最少,CLI 和 Linux 的兼容性也比較高,唯一的缺陷就是 Windows CLI 里和 Linux 重名的命令會被 Linux 版本覆蓋掉,比如 find 之類的。在我看來,反正 Windows CLI 是個渣渣,覆蓋了也無所謂了。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-25 09:05:49

    能比較出line ending是任何比較工具的基本能力

    回覆
    0
  • 取消回覆