3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gitで.gitignore以外の方法で管理しないファイルを指定する(あるいは個別環境固有のファイルを無視する)

Last updated at Posted at 2026-01-13

背景

Gitでは、各ディレクトリに .gitignore を置くことで、管理対象にしないファイルを指定できます。

しかし、自分の環境だけで無視したいファイルが出てくることもあるでしょう。Gitにはいくつか方法があります。

要約

  • グローバルであれば $HOME/.config/git/ignore が便利です
    • ただし、Git の設定の core.excludesFile が優先されるので注意です
  • 各リポジトリごとに設定したい場合は .git/info/exclude が良いでしょう

参考

細かい設定

  • ローカル(各 Git リポジトリ):
    • .git/info/exclude$GIT_DIR/info/exclude と表現されている)
    • git config --add core.excludesFile "path/to/file" で任意のパスを指定(グローバルより優先される)
  • グローバル(全ての Git リポジトリ):
    • $HOME/.config/git/ignore
      • ※厳密には $XDG_CONFIG_HOME/git/ignore だが、XDG_CONFIG_HOME 未設定時は $HOME となる
    • git config --global --add core.excludesFile "path/to/file" で任意のパスを指定

注意点

注意点として、複数設定した場合は以下の優先順位で適用されます。(同列では最も優先度が高いもののみが適用されます)

  • local の core.excludesFile > global の core.excludesFile > $HOME/.config/git/ignore
  • .git/info/exclude

.git/info/exclude は少し特別扱いされています。

$HOME/.config/git/ignore が効かない場合は、git config core.excludesFile で設定されていないかを確認してください。

動作テスト

global 設定の操作が含まれるため、実施する際は注意してください。

# 一応、
mkdir -p "$HOME/.config/git"

# 各.gitignoreファイルを用意
echo "test-global1.txt" > "$HOME/.mygitignore1"
echo "test-local1.txt" > "$HOME/.mygitignore2"

# 1. グローバル & 特定ファイルパス指定
# ※ $HOME/.config/git/ignore に追記操作があるので後始末に注意!
echo "test-global2.txt" >> "$HOME/.config/git/ignore"

# 2. グローバル & excludesFile指定
# ※ core.excludesFile が上書きされるので後始末に注意!
BACKUP_GIT_GLOBAL_EXCLUDES_FILE=$(git config --global core.excludesFile)
git config --global --add core.excludesFile "$HOME/.mygitignore1"

# テスト用 Git リポジトリ用意
mkdir test && cd test
git init

# 3. ローカル & 特定ファイルパス指定
echo "test-local2.txt" > ".git/info/exclude"

# 4. ローカル & excludesFile指定
git config --add core.excludesFile "$HOME/.mygitignore2"

# テスト用ファイル作成
echo > test-global1.txt
echo > test-global2.txt
echo > test-local1.txt
echo > test-local2.txt
echo > hello.txt

# 確認(3,4 が適用され、test-local1.txt, test-local2.txt だけ除外)
git status

# 4 の設定を解除
git config --unset core.excludesFile

# 確認(2,3 が適用され、test-global1.txt, test-local2.txt だけ除外)
git status

# 3 の設定を解除
rm ".git/info/exclude"

# 確認(2 が適用され、test-global1.txt だけ除外)
git status

# 2 の設定を削除
# ※ core.excludesFile を設定している場合は後で設定し直すこと
git config --global --unset core.excludesFile
# バックアップしている場合は以下で戻す
# git config --global --add core.excludesFile "$BACKUP_GIT_GLOBAL_EXCLUDES_FILE"

# 確認(1 が適用され、test-global2.txt だけ除外)
git status

コード確認

コード上はこのあたりでやっていそう。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?