• コーディング ファクトリーHOME
  • Coding Methodology
  • 第139回 複数人作業の意外な落とし穴 改行コードの設定を再確認

コーディングメソドロジー

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

複数の作業者でコーディングしていると、変更箇所以外が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)。
方法2)
コマンドを使わずに、ファイル「gitconfig」からも設定内容を確認することができます(例1-2)。

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

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

例1-2 gitconfigファイル内

  [core]
	    autocrlf = false

改行コードの変更手順

手順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. ③①を再度実行して、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クライアントツール)などで設定を変更する方法があります。
意外と忘れがちな「改行コード」、この機会に改めて確認してみてはいかがでしょうか。

  • 大規模サイト制作のご案内 大規模サイトプロジェクトのポイントやサービス内容をご紹介
  • コーディングメソドロジー
  • コーディングファクトリートピックス
  • 受注活動サポートサービス
  • コーディングファクトリーニュース
  • IllustratorでのWebデザイン
  • 求人案内
  • 株式会社モノサス
  • お問い合わせ

    コーディング相談ダイヤル

    お問い合わせ

  • ご相談、お問い合わせフォーム

    ご相談、お問い合わせフォーム