環境
Git 2.25
Ubuntu 20.4
はじめに
Gitの.gitignoreの配置は、使い方によって、大きく4パターンあります。それぞれの使い方についてまとめてみました。
- .gitignore
- .git/info/exclude
- ~/.gitexclude
- /etc/gitexclude
.gitignoreと.git/info/excludeの違い
GitHubに上げたくないファイルは、.gitignoreに記述することが多いかと思いますが、.git/info/excludeに記述することもできます。どちらに書いても同じではありますが、基本的には次のような使い分けがされます。
数名でプロジェクトの開発をしており、GitHubに上げないファイルを全員で共通化する場合は、.gitignoreに記述します。.gitignoreに追加が発生したときは、.gitignoreを全員で共有化させます。
GitHubに上げないファイルが、個人的に作成したファイルの場合、つまり、他人と共有する必要がない場合は、.git/info/excludeに記述します。.gitignoreには追加しません。他人と共有する必要がないためです。
.git/info/excludeは自分専用の、.gitignoreのような使い方をします。
個人で開発をする分には、.gitignoreを使っても、.git/info/excludeを使っても同じですが、.gitignoreを使うことが多いようです。
.gitignoreを、--global、--systemで設定する
.gitignoreも、.git/info/excludeも、プロジェクトファイルの配下におくため、そのプロジェクトにおいてのみ有効になります。
今後、携わる全プロジェクトにおいて、共通して、GitHubに上げないファイルがある場合、毎回、.gitignore(.git/info/exclude)に記述すると煩わしくなることがあります。
そのようなときに活用するのが、~/.gitexcludeです。
このファイルはGitをインストールするとデフォルトで作成されるファイルではないため、touchコマンドで自作する必要があります。ファイルを作成したら、つぎのコマンドを実行して有効にします。
$git config --global core.excludesfile $HOME/.gitexclude
このコマンドを実行すれば、~/.gitconfigにつぎのように書き込まれます。
[core]
excludesfile = /home/xxxx/.gitexclude
設定を取り消したい場合は、つぎのコマンドを実行します。~/.gitconfigから行が削除されます。
$git config --global --unset core.excludesfile
~/.gitexcludeに記述すると、全プロジェクトに対して有効になりますが、OSにログインしているユーザーにしか反映させません。どのユーザーでログインしても、共通で反映させたい場合は、/etc/gitexcludeに記述します(隠しファイルではないことに注意です)。
gitconfigファイルに書き込むコマンドはつぎのコマンドになります。gitconfigファイルの場所は、/etcです。~の配下ではないことに注意です。
git config --system core.excludesfile /etc/gitexclude