SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
てるてる動画

[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 でインデックスの内容は削除のコミットが反映された新しいものになり、ワーキングツリーはそのままの状態。

ワーキングツリーに変更が必要なファイルがあれば個別に反映する。

関連するメモ

コメント