git add時(shí)不同系統(tǒng)的CRLF處理問題

主題:git add處理不同系統(tǒng)的CRLF問題

將代碼從工作區(qū)加入暫存區(qū)時(shí)出現(xiàn)CRLF和LF轉(zhuǎn)換的問題,正好一年前我剛玩linux時(shí)候研究過一陣子這個(gè)問題,今天早上使用tcg/voyager時(shí)候也出現(xiàn)了這個(gè)問題,這里我就稍微說一下問題出現(xiàn)的原因以及處理的辦法。
如果您在Windows上進(jìn)行編程,但你的合作團(tuán)隊(duì)有人在MacOS或者Linux上編程,你可能遇到這篇文章的說明問題。這是因?yàn)閃indows在其文件中使用換行符和換行字符,而Mac和Linux系統(tǒng)只使用換行字符。這是跨平臺(tái)工作令人難以置信的煩人事實(shí); Windows上的許多編輯器用CRLF替換現(xiàn)有的LF行的結(jié)尾,或者當(dāng)用戶點(diǎn)擊Enter鍵時(shí)插入兩個(gè)行結(jié)束字符

  • 首先我們必須知道現(xiàn)在電腦系統(tǒng)有windows,unix兩大系列,unix下有很多變體稱為類Unix系統(tǒng)
    ,主要有MacOS,Linux,Hp-ux,Ibm-aix,Solaris等等。這其中由于Linux是開源集大成者,在它的體系中又衍生了以Fodora和Debian的兩大陣營。類unix系統(tǒng)大多數(shù)時(shí)候是使用兼容的,但是windows和類unix系統(tǒng)之間無論是操作還是設(shè)計(jì)理念都不一樣。

  • 這次要提到的問題,起源就在上面這段話中。類unix系統(tǒng)中,回車就是回車(carriage return),換行就是換行(line feed),它們綁定13和10兩個(gè)ASCII碼值,回車和換行分別簡(jiǎn)稱CR和LF。編輯代碼的時(shí)候,Windows系統(tǒng)里面,每行結(jié)尾是"<回車><換行>",即"\r\n";類Unix系統(tǒng)里,每行結(jié)尾是"<回車>"。

  • 這樣會(huì)導(dǎo)致什么后果?Unix/Mac系統(tǒng)下的文件在Windows里打開的話,所有文字會(huì)變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結(jié)尾可能會(huì)多出一個(gè)^M符號(hào)。

  • 那么git add
    操作中為什么會(huì)提示LF將會(huì)被替換為CRLF呢?主要可能有下面幾個(gè)原因?

    • 團(tuán)隊(duì)開發(fā),每個(gè)人實(shí)用的操作系統(tǒng)平臺(tái)不同。
    • 使用了雙系統(tǒng),開發(fā)時(shí)候切換系統(tǒng)進(jìn)行編碼。
    • 沒有設(shè)置PhpStorm和Atom等常用IDE均有的LF綁定功能。
  • 解決辦法呢?主要看你從git角度去解決還是文件角度去思考。如果你想把文件本身進(jìn)行轉(zhuǎn)換,請(qǐng)使用IDE的LF-CR綁定設(shè)置
    或者.editorconfig
    文件轉(zhuǎn)換,如果你從代碼提交暫存區(qū)或者倉庫來考慮,那么Git有幾個(gè)配置選項(xiàng)來幫助解決這些問題,你應(yīng)該看看下面的幾行代碼:

git config core.autocrlf true

git config core.autocrlf input

git config core.autocrlf false

core.autocrlf這個(gè)設(shè)置應(yīng)該在Windows檢查中留下CRLF結(jié)尾,但是在Mac和Linux系統(tǒng)以及存儲(chǔ)庫中的LF結(jié)束。

  • 第一行:當(dāng)你將文件添加到暫存區(qū)時(shí),Git可以通過設(shè)置core.autocrlf將CRLF行結(jié)尾自動(dòng)轉(zhuǎn)換為L(zhǎng)F來處理這類問題。如果您在Windows機(jī)器上,將其設(shè)置為true,那么當(dāng)您pull代碼時(shí),將LF結(jié)尾轉(zhuǎn)換為CRLF。

  • 第二行:如果您使用的是Linux或Mac系統(tǒng),那么當(dāng)您pull文件時(shí),您不希望Git自動(dòng)轉(zhuǎn)換它們; 然而,如果你的Windows隊(duì)友把未經(jīng)處理帶CRLF格式的文件push到遠(yuǎn)程代碼庫,那么你可能希望Git來自動(dòng)解決這個(gè)問題。可以通過將core.autocrlf設(shè)置為input來告知Git將CRLF轉(zhuǎn)換為L(zhǎng)F。

  • 第三行:如果你是Windows程序員,只執(zhí)行一個(gè)Windows項(xiàng)目或者所團(tuán)隊(duì)都是用windows系統(tǒng)甚至服務(wù)器都用windows,那么您可以關(guān)閉此功能,通過將配置值設(shè)置為false,將回車記錄在存儲(chǔ)庫中。

參考地址:

維基百科:類Unix系統(tǒng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,629評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評(píng)論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,411評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,641評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,820評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,362評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,604評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容