Coding Methodology

複数人作業の意外な落とし穴 改行コードの設定を再確認

2021 / 03 / 01

複数の作業者でコーディングしていると、変更箇所以外がGitに差分として表示されてしまうことはありませんか?それは、プロジェクトのGitリポジトリとご自身の開発環境の改行コード設定が異なっていることが原因かもしれません。改行コードは、WindowsではCRLF、MacではLFが標準で利用されます。そのため、各作業者のOS、エデイター、Gitの環境設定の違いによって、開発中のプロジェクトのGitリポジトリとの間で思わぬ差分が発生してしまうことがあります。今回はコマンドを利用して、改行コードの確認・変更を行う方法をご紹介します。

複数人作業の意外な落とし穴 改行コードの設定を再確認

Gitの改行コード自動変換機能

Gitには改行コードを自動で変換するautocrlfの設定ができます。これはGitでcommitした時とclone、checkoutした時に自動的に改行コードを変換する仕組みです。

trueを設定している場合

commit時:CRLFからLFに変換
clone時、checkout時:LFからCRLFに変換

プロジェクトのGit内で管理されている改行コードがLFの場合、自動変換をONにしていると、Windowsではcloneしたリポジトリ内のコードはCRLFに変わってしまうため、想定していなかった差分が出ることがあります。

現在の設定確認の方法

方法1)

「$ git config –show-origin core.autocrlf」のコマンドを実行することで、Gitの設定のうち、改行コードの自動変換設定が確認できます(例 1-1)。

例1-1 コマンド実行結果の表示例

$ git config --show-origin core.autocrlf
file:{設定ファイルのディレクトリ}/.gitconfig true

方法2)

コマンドを使わずに、ファイル「gitconfig」からも設定内容を確認することができます(例1-2)。

例1-2 gitconfigファイル内

 [core]
autocrlf = falsefile:{設定ファイルのディレクトリ}/.gitconfig true

改行コードの変更手順

手順1)git configコマンドでGitの設定を変える

$ git config[オプション]core.autocrlf falseを使います。
適用したい範囲に応じて、--system, --global, --localを[オプション]として指定することができます(例2-1)。
なお、Gitの設定の優先される順番は、local > global > systemとなります。

例2-1コマンド使用例

//システム全体
$ git config --system core.autocrlf false

//ユーザーの全リポジトリ
$ git config --global core.autocrlf false

//対象リポジトリのみ
$ git config --local core.autocrlf false

手順2)すでに進行中のプロジェクトにあるファイルの改行コー ドを変更

  1. フォルダ内でCRLFになっているファイルをコマンドで確認します(コマンド1-1)。
  2. CRLFになっているファイルがあれば、続けて改行コードを変更します(コマンド1-2)。
  3. 1.を再度実行して、CRLFのファイルがなくなったことを確認します。

コマンド1-1

$ find . -type f | xargs file | grep CRLF

コマンド1-2

$ find . -type f | xargs file | grep CRLF | awk -F: '{print $1}' | xargs dos2unix


上記のようにコマンドを使用する以外にも、エディターやGUI(Gitクライアントツール)などで設定を変更する方法があります。
意外と忘れがちな「改行コード」、この機会に改めて確認してみてはいかがでしょうか。

一覧に戻る