この記事は最終更新日から5年以上が経過しています。
既に追跡されている
追跡の必要性がなくなった場合
ファイルを削除 & インデックスから削除して commit
git rm path/to/file
git commit -m 'Good-bye file'
なお, ファイルを残したまま追跡から逃れたいときは git rm --cached path/to/file
でインデックスのみ削除し, .gitignore
などで指定する. また, 誤って git rm
してしまったときは git reset @~ path/to/file
, git checkout path/to/file
で回復する.
ローカルでのみ追跡してほしくない場合
二つ方法がある. これらの違いは既に git 管理しているファイルをあえて無視したい – Qiitaに詳しい.
用途に依るが, assume-unchanged
の変更は git reset --hard
で死ぬので, 基本的には skip-worktree
を使う.
assume-unchanged
除外するとき
git update-index --assume-unchanged path/to/file
除外から戻すとき
git update-index --no-assume-unchanged path/to/file
確認するとき
git ls-files -v | grep ^h
skip-worktree
除外するとき
git update-index --skip-worktree path/to/file
除外から戻すとき
git update-index --no-skip-worktree path/to/file
確認するとき
git ls-files -v | grep ^S
まだ追跡されていない
プロジェクト単位で追跡してほしくない場合
.gitignore
に記述する.
ローカルでのみ追跡してほしくない
対象リポジトリのみで追跡から逃れる場合
.git/info/exclude
に記述する.
ローカルの全リポジトリで追跡から逃れる場合
ホームディレクトリに .gitignore
を用意する (今回は区別のため .gitignore_global
とした.)
~/.gitignore_global
*~
*.swp
*.swo
.DS_Store
*~
*#
.#*
git の global 設定に保存する
git config --global core.excludesfile $HOME/.gitignore_global
上のコマンドにより, 以下のように設定が ~/.gitconfig
に反映される.
~/.gitconfig
[core]
excludesfile = /home/{ユーザー名}/.gitignore_global