【Git】Git ~ 改行コード自動変換 core.autocrlf ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/08/05/144724

の「【2】エラー「Terminated with errors Bootstrap failure」が表示」で
シェルスクリプトの改行がCRLFだと、Amazon EMRがうまく動かなかったことがあった。

で、また、エラー表示は異なる(※1)が、同じ原因の問題が発生した。
この問題を防ぐ解決案として、Git の 改行コード自動変換 core.autocrlf を
設定することがあげられる。

 そこで、今回は、自分の戒めも込めて、
Gitの『core.autocrlf 改行コード自動変換ON/OFF』について、まとめておく。

※1
 上記関連記事の
『【3】エラー「IOException: (in directory "."): error=2, ...」が表示』を参照。

目次

【1】改行コードの自動変換 core.autocrlf
【2】(個人的な)結論
【3】設定による影響について

【1】改行コードの自動変換 core.autocrlf

Gitの改行コードの自動変換を設定する。
オプション 説明 Checkout/Clone Commt
true チェックアウト/クローン/コミット時に改行変換。Git for Windowsのデフォルト LF -> CRLF CRLF -> LF
input コミット時のみ改行変換 変換しない CRLF -> LF
false チェックアウト/クローン/コミット時どちらも変換せず 変換しない 変換しない

【2】(個人的な)結論

個人的な結論として、以下。

1)Git for windows を インストールしたら、以下の設定を行う。

core.autocrlf の設定例

# コミット・チェックアウト時に改行コード変換をしない
$ git config --global core.autocrlf false

# 改行コード自動変換ON/OFF の確認
$ git config core.autocrlf
false

【3】設定による影響について

Windows 上で、「core.autocrlf=true」の場合、以下のようなことが起こる。
 => 自動デプロイを整備しておけば、こんなこと発生しないが、、、

Windows における「core.autocrlf=true」の実害例

1)Windows上のローカル上で、シェルを新規作成(改行 LF)
2)1)を Githubなどのサーバに対して、Commit&Push
3)2)のサーバに対して、新たにCloneする
 => ここで「LF -> CRLF」に代わってしまう
4)3)を元にデプロイする

参考文献

https://qiita.com/uggds/items/00a1974ec4f115616580
https://qiita.com/yoshiplur/items/568d1e83c54a5c68da30

関連記事

Git ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/06/29/104028
Git ~ git config あれこれ ~
https://dk521123.hatenablog.com/entry/2021/01/10/000000
PC が新しくなった際のGit/Githubの設定
https://dk521123.hatenablog.com/entry/2024/01/06/000000
Amazon EMR に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/08/05/144724