ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
記事のバージョン: GitHub.com

行終端を処理するようGitを設定する

diff における問題を回避するため、行終端を正しく処理できるよう Git を設定できます。

キーボードで return を押すたびに、実際には行終端と呼ばれる目に見えない文字が挿入されています。 伝統的に、オペレーティング システムごとに行終端の扱いが異なります。

ファイル内の変更を表示すると、Git は独自の方法で行終端を扱っています。 Git と GitHubでコラボレートしているため、自分が Windows マシンを使用し、コラボレーターが OS X で変更した場合、Git により予想外の結果が生じる可能性があります。

行終端のグローバル設定

Git による行終端の扱い方を変更するには git config core.autocrlf コマンドを使用します。 必要な引数は 1 つです。

OS X では、設定に input を渡すだけです。 例:

$ git config --global core.autocrlf input
# 行終端を正しく処理するように OS X で Git を設定する

Windows では、設定に true を渡すだけです。 例:

$ git config --global core.autocrlf true
# 行終端を正しく処理するように Windows で Git を設定する

Linux では、設定に input を渡すだけです。 例:

$ git config --global core.autocrlf input
# 行終端を正しく処理するように Linux で Git を設定する

OS X と Linux では、通常は設定に input を渡します。 Windows では、 通常 true を渡します。 例:

$ git config --global core.autocrlf input
# 行終端を正しく処理するように OS X または Linux で Git を設定する

$ git config --global core.autocrlf true
# 行終端を正しく処理するように Windows で Git を設定する

リポジトリ単位での設定

特別な .gitattributes ファイルを構成することで、Git が行終端を管理する方法をリポジト単位で設定できます。 このファイルをリポジトリにコミットすると、個々の core.autocrlf 設定より優先され、全ユーザそれぞれの Git 設定に関わらず一貫した動作を確保できます。 .gitattributes ファイルのメリットは、設定した行構成がリポジトリに関連付けられることです。 コラボレータが同じ行終端の設定をしているかどうか心配する必要はありません。

.gitattributes ファイルは、リポジトリのルートに作成し、他のファイルと同様にコミットする必要があります。

.gitattributes ファイルは 2 列で構成される表のようなものです:

サンプル

以下は .gitattributes ファイルの例です。 あなたのリポジトリでのテンプレートとしてご使用ください:

# core.autocrlf を設定していない人のために、デフォルトの動作を設定する。
* text=auto

# 常に正規化し、チェックアウトの際ネイティブの行終端に変換したい
# テキストファイルを明示的に宣言する。
*.c text
*.h text

# チェックアウトの際常に CRLF を行終端とするファイルを宣言する。
*.sln text eol=crlf

# 完全にバイナリで変更すべきでないファイルをすべて示す。
*.png binary
*.jpg binary

上のように、まずファイルの種類を示し (*.c*.sln*.png など)、そのあとに区切り文字として空白文字を続け、そのあとに、そのファイルの種類に適用すべき設定 (texttext eol=crlfbinary など) を指定します。 以下、利用可能な設定を見てみましょう。

<

dl>

text=auto
Git が最善と判断する方法でファイルを処理します。 これは便利なデフォルトのオプションです。
text eol=crlf
Git はチェックアウトの際常に行終端を CRLF に変換します。 OSX や Linux であったとしても、終端が CRLF でなければならないファイルにはこれを使用する必要があります。
text eol=lf
Git はチェックアウトの際常に行終端を LF に変換します。 Windows であったとしても、終端が LF でなければならないファイルにはこれを使用する必要があります。
binary
Git は指定されているファイルがテキストではなく、変更を試みるべきではないことを理解します。 binary 設定は -text -diff のエイリアスでもあります。

行終端を変更した後でリポジトリを更新

core.autocrlf オプションを設定して .gitattributes ファイルをコミットすると、Git は変更されていないファイルをもコミットしようとします。 この段階で、Git はあらゆるファイルの行終端を変更しようとします。

リポジトリの行終端を自動的に設定する最良の方法は、まず Git でファイルをバックアップし、リポジトリからあらゆるファイルを削除して (.git ディレクトリ以外)、その後いっせいにファイルを復元することです。

  1. 作業結果を失うことのないよう、Git で現在のファイルを保存します。

    $ git add . -u
    $ git commit -m "Saving files before refreshing line endings"
  2. 変更したファイルをすべて再度追加し、行終端を正規化します。

    $ git add --renormalize
  3. 書き直し、正規化したファイルを表示します。

    $ git status
  4. 変更をリポジトリにコミットします。

    $ git commit -m "Normalize all the line endings"

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください