[git] コミット済みのファイルをバージョン管理から外す方法
問題
現状でgit管理されているファイルを、バージョン管理対象外にしたいです。
答え
.gitignore に追記
今後もバージョン管理対象外にし続けるなら、いずれ必要なので、先に追記しておく。
インデックスからファイルを削除する
git rm --cached ファイル名
git rm だとワーキングツリーからも消える。–cachedでインデックスからだけ削除。
.gitignore の対象のファイルでも、バージョン管理に追加してしまったファイルは表示されない。
削除をコミットする
git commit
ワーキングツリーにファイルを残したまま、削除をコミットできる。
今後も .gitignore のおかげで無視され続ける。
pullする側
なお、これをpull、mergeする側では、削除が発生する。
あらかじめインデックスから削除しておくと、ワーキングツリーには影響が及ばないようだ。
pullする側で削除されるのを防ぐには、pullする側でも同じようにインデックスから削除してからpullする。
git rm --cached ファイル名
git pull
もしくは、以下のようなことをしても削除を防いでブランチを進めることは可能。
git fetch
git reset --mixed origin/ブランチ
git checkout バージョン管理を継続するファイルたち
reset –mixed でインデックスの内容は削除のコミットが反映された新しいものになり、ワーキングツリーはそのままの状態。
ワーキングツリーに変更が必要なファイルがあれば個別に反映する。
コメント