本文へ移動
vast-cowのブログ
前のページへ戻る

Gitで `.gitattributes` をコミットせずに改行コードを統一する方法

この記事を編集

Gitで開発していると、WindowsとLinux/macOSの間で CRLFとLFの違いが問題になることがあります。

一般的な解決方法は、リポジトリに .gitattributes を配置して改行コードのルールを定義することです。

しかし、

といったケースもあります。

Gitでは、.gitattributes をリポジトリにコミットしなくても、同等の設定を行うことができます。

特定のリポジトリだけ設定する

特定のリポジトリにだけ適用したい場合は、次のファイルを使用できます。

.git/info/attributes

このファイルは .git ディレクトリ内にあるため、通常はGitの管理対象になりません。

例えば、次のように設定します。

* text=auto eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf

この設定では、基本的にテキストファイルをLFとして扱い、WindowsのバッチファイルだけCRLFにします。

それぞれの意味は次のとおりです。

* text=auto eol=lf

テキストとして認識されたファイルについて、ワーキングツリー上の改行コードをLFにします。

一方、

*.bat text eol=crlf
*.cmd text eol=crlf

では、.bat と .cmd をテキストファイルとして扱い、ワーキングツリー上ではCRLFにします。

つまり、基本方針としては、

通常のテキストファイル → LF
Windowsバッチファイル → CRLF

という構成になります。

すべてのリポジトリで共通設定する

毎回 .git/info/attributes を作るのが面倒な場合は、Gitのグローバル設定を利用できます。

まず、attributesファイルの場所を設定します。

git config --global core.attributesFile ~/.gitattributes

続いて ~/.gitattributes を作成します。

* text=auto eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf

これで、自分の環境で扱うGitリポジトリに共通のattributes設定を適用できます。

.git/info/attributes とグローバル設定の使い分け

用途によって使い分けると分かりやすいです。

方法適用範囲Git管理
.gitattributesリポジトリされる
.git/info/attributes特定のリポジトリされない
core.attributesFile自分のGit環境全体各リポジトリからはされない

チーム全体で同じルールを適用する必要があるなら、リポジトリに .gitattributes を置く方法が適しています。

一方、「自分の開発環境だけLFを基本にしたい」といった個人的な設定なら、

git config --global core.attributesFile ~/.gitattributes

を設定しておくと便利です。

特定のリポジトリだけ例外的なルールが必要なら、

.git/info/attributes

を利用できます。

まとめ

リポジトリに .gitattributes を追加できない場合でも、Git attributesの仕組み自体は利用できます。

全リポジトリ共通なら、

git config --global core.attributesFile ~/.gitattributes

として、

* text=auto eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf

を設定します。

特定のリポジトリだけなら、同じ内容を、

.git/info/attributes

に記述します。

これにより、基本はLF、WindowsのバッチファイルだけCRLFというルールを、リポジトリに設定ファイルをコミットすることなく適用できます。


この記事を編集
この記事を共有:

コメント


前の記事
FFmpeg + MediaMTXで映像をできるだけ低遅延にネットワーク配信する
次の記事
Windowsの「関連付け」から特定アプリを削除するツールの使い方