こんにちは。新卒エンジニアのとりです。
Windowsを利用しているエンジニアの皆さん、macユーザーが作ったコードを利用する際に、改行エラーに苦しんだことはありませんか。
本記事ではWindowsユーザーがmacOS/Linux中心のチームで開発する際に実行すべき、改行エラーを解消する魔法のコマンド、
git config --global core.autocrlf input
について紹介します。
簡単に言うと、Windowsユーザーがmacチームの作ったコードをそのまま自分の開発環境でも使えて、自分がコミットする際も悪影響を与えない役割を果たしてくれます。
コマンド実行の注意点
1.使う場面
git clone前が適切です。既にチェックアウトしている場合は、もう一度クローンし直すのが最善です。
2.グローバル設定
紹介しているコマンドはグローバル設定を変更するため、プロジェクトごとに設定したい場合は、そのルートディレクトリで--globalなしで実行してください。
なぜ改行コードが問題になるのか?
これは、両OSで使われる改行コードが異なるためです。
WindowsではCRLF、macやLinuxではLFという改行コードが一般的に使用されています。
-
CRLF(Carriage Return Line Feed)
: \rと\nの2つの文字を組み合わせて改行を表す。 -
LF(Line Feed)
: \nの一つの文字で改行を表す。
したがって、LF環境で作られたコードをCRLF環境で実行すると挙動が変わるのです。以下のようなスクリプトの実行エラーの原因となります。
例1改行文字を認識しない
error: syntax error near unexpected token $'\r''
例2ファイルが見つからない
error: No such file or directory
### 具体的なコマンドの意味
このコマンドはGitのグローバル設定にある、改行コードの扱いを取り決めるcore.autocrlfを変更します。core.autocrlfに設定できる値は以下の3つです。
-
input
: チェックアウト時は変更しない、コミット時はCRLF→LF -
true
: チェックアウト時はLF→CRLF、コミット時はCRLF→LF -
false
: チェックアウト時もコミット時も変更しない
Windowsユーザーが変更を加えないでGitをインストールすると、自動でtrueになっています。
core.autocrlfをinputにすることで、Windowsユーザーはmacユーザーが作ったコードを扱う際に無駄に変更を加えたり、コミット時にそれを戻したりする作業をしなくて済むのです。
まとめ
この記事では、WindowsユーザーがmacOS/Linux中心のチームで開発する際に発生する問題を解消するためのコードgit config --global core.autocrlf input
について紹介しました。
この設定で、改行コードを意識せずにスムーズなチーム開発が望めます。