📘
Gitで管理しているソースの改行コードに注意
改行コード
改行コード名 | 改行コード | OS |
---|---|---|
LF(Line Feed) | \n |
UNIX系全般 |
CR(Carriage Return) | \r |
Mac OS(9以前) |
CRLF | \r\n |
Windows系全般 |
改行コード不一致のトラブル
チームで開発する時、改行コードを統一しないと、不注意にトラブルが発生する恐れがあります。
-
スクリプト実施不可
- Linuxのシェルの改行コードがLFではないと、実行できません。
- 逆にWindowsのコマンドスクリプトの改行コードがCRLFではないと、実行出ません。
-
差分比較不可
ソースを修正してないのに、改行が違う場合、行の差分は出ています。
実際の変更内容は見づらくなります。
ローカル開発時の改行コードのプラクティス
Gitクライアントのデフォルト動きの制御
グローバルのコンフィグ(core.autocrlf)をコンフィグする
設定 | チェックアウト時 | コミット時 |
---|---|---|
true | LF -> CRLF | CRLF -> LF |
input | 変換しない | CRLF -> LF |
false | 変換しない | 変換しない |
.gitattributes
で制御
リポジトリにリポジトリのルートフォルダーに.gitattributes
を追加して、ソースの改行コードを制御します。
Java開発のサンプル例:
.gitattributes
# デフォルトの改行コードをLFにする。
* text=auto eol=lf
# Linuxシェル
*.sh text eol=lf
# Windowsシェル
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
# 完全にバイナリで変更すべきでないファイルをすべて示す。
*.png binary
*.jpg binary
*.jar binary
# ビルドツールのLinux用シェル
mvnm text eol=lf
gradlew text eol=lf
Discussion