Gitでファイルやディレクトリを無視する方法には、いくつかの選択肢があります。それぞれの方法の違いと使い所についてまとめたいと思います。
目次
まとめ
~/.config/git/ignore |
.gitignore |
.git/info/exclude |
|
---|---|---|---|
適用範囲 | グローバル (すべてのリポジトリに適用) | リポジトリごとに適用 | リポジトリごとに適用 |
ファイルの場所 | ユーザーのホームディレクトリ | リポジトリのルートディレクトリ | リポジトリの.git ディレクトリ内 |
影響範囲 | ユーザーの環境のみ | チーム全体(リポジトリを共有する全員) | ユーザーの環境のみ |
コミット | コミットされない | コミットされる | コミットされない |
使い所 | 個人的な環境設定ファイルやメタデータ | プロジェクト全体の無視したいもの | 一時的または個人的なもの |
具体例 |
.DS_Store , エディタの設定ファイル |
node_modules , .env , dist フォルダ |
デバッグ用の一時ファイル |
~/.config/git/ignoreを利用する場合
- 特徴
- ユーザーのホームディレクトリに存在し、グローバルな設定として全てのリポジトリに適用されます。
- ユーザーごとの設定なので、他の開発者には影響しません。
- 使い所
- 個人的な開発環境に依存するファイルを無視したい場合
- 例: 自分が利用しているエディタの設定ファイルなど
- 全てのリポジトリで共通して無視したいファイルがある場合
- 例: DS_Storeのようなメタデータファイル
- 個人的な開発環境に依存するファイルを無視したい場合
自分は~/.gitignore_global
で同様の設定をしていたのですが、~/.config/git/ignore
がデフォルトのようです。
https://zenn.dev/qnighy/articles/1a756f2857dc20
~/.gitignore_global
で無視していたものを~/.config/git/ignore
で管理し直す場合は、既存のcore.excludesfileの設定を削除する必要があります。
# 現在の設定を確認
git config --global --get core.excludesfile
# .gitignore_globalの場所が表示される
# 現在の設定を削除
git config --global --unset core.excludesfile
# 設定が削除されたことを確認
git config --global --get core.excludesfile
# 何も表示されなければ削除成功
これで~/.config/git/ignore
の内容が反映されるようになります。
.gitignoreを利用する場合
- 特徴
- リポジトリごとに存在し、プロジェクトのルートディレクトリに配置されます。
- .gitignore自体はリポジトリにコミットされるため、他の開発者とも共有されます。
- 使い所
- プロジェクト全体で無視するファイルやディレクトリを指定したい場合
- 例: envやnode_modulesやdistファイルなど
- 無視する内容をチームで共有する必要がある場合
- プロジェクト全体で無視するファイルやディレクトリを指定したい場合
.gitignore自体はGit管理されます。
もし自分のメモ用のファイルを無視する場合、以下のように.gitignoreに追記するとそれが差分として現れてしまいます。
memo.txt
+ memo.txt
このように自分用のファイルを無視する際、
他の開発者に影響は与えたくないが、グローバルな設定にするほどではないという場合は次の方法が使えます。
.git/info/excludeを利用する場合
- 特徴
- 各リポジトリの.gitディレクトリの中に存在します。
- .git/info/excludeはリポジトリにコミットされない他、他の開発者には影響しません。
- 使い所
- 特定のリポジトリで一時的に無視したいファイルやディレクトリがある場合
- ignoreする内容をチームで共有する必要がない場合
この方法であれば他の開発者に影響を与えることなく任意のファイルを無視することができます。
最後に
Gitでファイルを無視する方法はそれぞれ特徴と使い所があります。
個人的にどの方法にするかは以下の基準で考えています。
・プロジェクトに関係するもの → .gitignoreで管理
・個人の環境に関係するのもの → ~/.config/git/ignoreで管理
・そのプロジェクトに関係するもので自分にしか関係のないもの → .git/info/excludeで管理
以上、今回紹介した方法を活用して快適なGit運用に活かしていただけると幸いです。
参考