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

このバージョンの GitHub Enterprise はこの日付をもって終了となります: このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2020-01-22. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

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

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

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

ファイル内の変更を表示すると、Git は独自の方法で行終端を扱っています。 Git と GitHub Enterpriseでコラボレートしているため、自分が 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 列で構成される表のようなものです:

  • 左側は Git が一致させるファイル名です。
  • 右側はそのようなファイルに対して Git が使用すべき行終端の設定です。

サンプル

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

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

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

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

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

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

`text=auto`
Git が最善と判断する方法でファイルを処理します。 これは便利なデフォルトのオプションです。
`text eol=crlf`
Git will always convert line endings to `CRLF` on checkout. You should use this for files that must keep `CRLF` endings, even on OSX or Linux.
`text eol=lf`
Git will always convert line endings to `LF` on checkout. Windows であったとしても、終端が LF でなければならないファイルにはこれを使用する必要があります。
`binary`
Git は指定されているファイルがテキストではなく、変更を試みるべきではないことを理解します。 The `binary` setting is also an alias for `-text -diff`.

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

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

The best way to automatically configure your repository's line endings is to first backup your files with Git, delete every file in your repository (except the .git directory), and then restore the files all at once.

  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"

参考リンク

担当者にお尋ねください

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

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