2013-03-05 63 views
2

在我們的辦公室,我們在一個由10名開發人員組成的團隊中工作。他們大多數都有一臺Mac機器。最近我意識到,當我檢查我的工作差異時(僅更改一行代碼後)幾乎每行都會更改,但git diff顯示您更改的內容與原始內容完全相同。經過一番研究後,結果證明這是一條不同的新路線。在我做任何事情之前,它是'\ r \ n'(CR + LF,0x0D0A),並且在我改變之後,所有非Unix新行(\ r \ n)都改爲Unix(\ n)。用git pre-commit hook修復mac/windows新行?

我意識到我可以讓我的同事們改變他們的IDE設置,但是我意識到我可以準備一些腳本,每次他們提交時都需要運行。

如何在git commit之前運行bash腳本?如何使用git pre-commit hook?

回答

4

一切都是https://help.github.com/articles/dealing-with-line-endings 這裏http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in

對於Linux/Mac計算機使用

git config --global core.autocrlf input 

對於Windows機器上使用

git config --global core.autocrlf true 

與此設置git會轉換所有\r\n行解釋在每次提交之前結尾爲\n

+0

Macs現在使用'\ n'作爲行尾。我找不到來源,但這是事實。 – Hauleth 2013-03-11 09:11:32

+0

這是真的http://en.wikipedia.org/wiki/Newline#Representations但似乎我的一些同事IDE設置爲非Unix行尾。 – sobi3ch 2013-03-11 10:24:59

+2

Windows用戶_may_也希望'\ n'行結尾。在這種情況下,最好在git鉤子中處理轉換。 – Simon 2014-07-17 11:21:19