Git: 自分だけの無視設定は .git/info/exclude に書く
.gitignore はチーム全員で共有する設定。自分の環境にしかないファイル(個人用メモ、ローカル用スクリプト、エディタの作業ファイルなど)は .git/info/exclude に書けば、コミットされずに無視される。
使い分け
| 置き場所 | 共有されるか | 範囲 | 向いているもの |
|---|---|---|---|
.gitignore | される(コミットする) | そのリポジトリ | ビルド成果物、node_modules、.env |
.git/info/exclude | されない | そのリポジトリだけ | 自分だけの notes.md、scratch/、ローカル用の設定 |
core.excludesFile(既定は ~/.config/git/ignore) | されない | 自分の全リポジトリ | .DS_Store、エディタのスワップファイル |
bash
echo "scratch/" >> .git/info/exclude
echo ".DS_Store" >> ~/.config/git/ignore # 全リポジトリ共通(ファイルがなければ作る)
git check-ignore -v scratch/foo.txt # どのファイルのどの行で無視されたかを確認書き方(パターンの文法)は .gitignore と同じ。
注意点
- すでに追跡されているファイルには効かない。 無視したいなら
git rm --cached <file>で追跡を外す(チームに影響するので注意)。追跡したまま手元の変更だけ無視したいならgit update-index --skip-worktree <file>。 .git/info/excludeはクローンし直すと消える。全リポジトリ共通のものはグローバル設定へ。- worktree を使っている場合、
info/excludeはメインの.gitディレクトリのものが共有される。