轉(zhuǎn)載: @換行符自動轉(zhuǎn)換
問題描述
多平臺共同開發(fā)時傲武,使用的gitlab托管代碼性芬,Clone或者Pull下來的代碼存在換行符問題居兆,導(dǎo)致腳本使用無法在cygwin運行慨蓝。
總結(jié):
- 換行符:
- UNIX/Linux : LF (0x0A),'\n'
- Mac OS : LF (0x0A)感混,之前是CR (0x0D)。
- DOS/Windows: CRLF(0x0D0A) '\r\n'
查看方式:使用 Notepad++打開文件礼烈,點擊小圖標“顯示所有字符”
CR用符號'\r'表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D;
LF使用'\n'符號表示, ASCII代碼是10, 十六制為0x0A. 所以Windows平臺上換行在文本文件中是使用 0d 0a 兩個字節(jié)表示, 而UNIX和蘋果平臺上換行則是使用0a或0d一個字節(jié)表示
- git智能轉(zhuǎn)換
- 自動模式
- 當(dāng)你在簽出文件時弧满,它試圖將 UNIX 換行符(LF)替換為 Windows 的換行符(CRLF);當(dāng)你在提交文件時此熬,它又試圖將 CRLF 替換為 LF庭呜。保持倉庫內(nèi)文件的一致性(UNIX 風(fēng)格)
- 問題發(fā)生:
在windows環(huán)境下,當(dāng)Clone或Pull下來的代碼犀忱,自動將文件換行符改成了CRLF募谎,包括SHELL腳本,但是我們項目中是使用cygwin運行腳本的阴汇,這會導(dǎo)致?lián)Q行符問題:
打開build.sh数冬,發(fā)現(xiàn)所有的換行符都是CRLF;
解決問題
- 修改GIT配置
-
GIT 命令:
先設(shè)置不自動轉(zhuǎn)換,
再添加換行符檢查功能鲫寄,在提交代碼時吉执,當(dāng)發(fā)現(xiàn)混用時,就不提交代碼
- 如果使用的TortoiseGit的話地来,可以這樣設(shè)置:
- 當(dāng)在提交代碼時戳玫,出現(xiàn)混用的話,可以將文件改成unix形式,使用命令dos2Unix命令:
測試:在windows下創(chuàng)建一個文件未斑,使用dos2Unix轉(zhuǎn)換:
轉(zhuǎn)換后:
已經(jīng)將CRLF變成LF