可惡的git居然會幫我的文字檔加料
這篇是要說關於Git checkout style的問題
相信大家都有看過這個東西。但是可能沒被陰過所以不知道這個東西的厲害。
Windows的換行是\r\n 俗稱CRLF ASCII是0x0D0A
Unix的換行是\n 俗稱LF 0x0A
左邊Git按裝的時候都會跳出這個,但是通常都會按Next>根本不關他寫了啥
沒關係
大部分的時候也不會有事情
我也不確定到底什麼時候會有事情
但是最近常跟shell打交道感觸很深所以專程來研究了一下
第一個是Checkout時會幫你把LF轉成CRLF,但commit會幫你把CRLF轉成LF
第二個是Checkout不轉換,commit會把CRLF轉成LF
第三個就是Checkout或Commit都不轉換
=============
比較常會出問題的地方就是shell script
因為bash沒辦法吃有\r的script
所以如果假設用cygwin 執行用Windows Style Checkout下來的shell script你知道會發生什麼事情了吧
解救辦法:可以用dos2unix把那那一堆東西一次轉好
例如:dos2unix config/*.sh <-後面這一個參數是路徑啊