Git の core.autocrlf 設定してる?
プログラムのソースコードのバージョンを管理する為に, Git を使っている方たくさんおられると思います.
僕も使ってます.
他の人とコラボレートしたことがない僕が言うのもなんですが他の人たちとコラボレートする際には .gitconfig ファイルに設定しておいたほうがいい項目があるようです.
それは core.autocrlf というものです.
これはソースコードの各行末の見えない文字 EOL をコントロールする為の設定です.
Mac, Linux を使っている人だったら EOL は LF となります.
Windows を使っている人だったら CRLF となります.
このように使う OS によって使われる EOL が異なるので, 他の人たちとコラボレートするときに何も設定していないと問題になるようです.
僕は Mac を使っているので次のように設定しました.
git config --global core.autocrlf=input
core.autocrlf=input は EOL が CRLF のファイルをコミット時に不可逆的に LF に変換します.
ファイルの EOL を LF で一貫させたい Linux や Mac で推奨されます.
Git を Mac や Linux で使われている方でしたら少なくとも core.autocrlf=input の設定をされることをお勧めします.
あと次のような安全機構的な設定もあります.
git config --global core.safecrlf=true
core.safecrlf=true は EOL が CRLF のファイルを不可逆的に LF に変換するオペレーションを中断させます.
なので core.autocrlf=input が設定されていて通常なら CRLF から LF へ不可逆的に変換されていたであろう状況を作りません.
自動的に CRLF を LF に変換したくない人はこの core.safecrlf=true を設定してみるといいと思います.
他の人たちとのコラボレーションを考えている方でまだ設定していない方はこれらの設定をしてみてください.
あと例えば Web 上で公開されているスニペットをコピーした時に CRLF が含まれていても, コミットした際に LF に変換してくれたり中断してくれたりするのでコラボレーションを考えてない方も Git を Mac や Linux で使っている方は上のような設定をされることをお勧めします.
EOL は大事なコードの一部だと思いますので, ぜひ core.autocrlf を設定してみてください.
関連記事
git rebase でヒストリを直線的にする方法と使う時の注意点2018.08.13
GitHub のレポジトリをクローンする際, HTTPS で指定された URL を SSH 用の URL として扱う方法2018.10.31
Git の merge.conflictStyle を merge から diff3 に変更したら, マージコンフリクトがより解決しやすくなった2018.08.19
Git の mergetool で vimdiff を指定して Vim でマージコンフリクトを解決してみた2018.08.20
git merge オプションの --ff, --no-ff, --ff-only の違い2018.08.15