git commit した後に .gitignore したい場合


[まとめ] 現在開催中のKindleセール情報はこちら

時々、git commit した後に「そういえばこれ管理対象から外したいファイルだった」と気づいて .gitignore したいということがあります。

git rmを使えばリポジトリ管理から削除することはできますが、ローカルのファイルも削除されてしまいます。

ローカルのファイルは削除せずに残しておきたい。。。

そんな場合 git rm –cached を指定することで、リポジトリからのみ削除することが可能です。

git rm --cached {管理対象から外したいファイル名}

実験してみます。

・リポジトリを作成してファイルをコミットする

mkdir sample

cd sample

git init

echo 'ignore' > ignore1.html

echo 'ignore' > ignore2.html

git st
#   ignore1.html
#   ignore2.html

git add .

git commit -m 'first commit'

・ignore1.html, ignore2.htmlに変更を加える

echo 'add ignore' > ignore1.html

echo 'add ignore' > ignore2.html

・管理対象から外すファイルだったことに気づき、.gitignoreにignore1.html, ignore2.htmlを記述

vi .gitignore
ignore1.html
ignore2.html

git st
#   modified:   ignore1.html  # 無視されない
#   modified:   ignore2.html  # 無視されない
#   .gitignore

・git rmを実行

git rm ignore1.html
error: 'ignore2.html' has local modifications
(use --cached to keep the file, or -f to force removal)
ローカルで変更を加えているためrmできず、今回はfオプションで強制削除してみます

git rm -f ignore1.html

git st
deleted:    ignore1.html

ls -la
ローカルからもignore1.htmlが削除されています

・git rm –cachedを実行

git rm --cached ignore2.html

git st
#   deleted:    ignore1.html
#   deleted:    ignore2.html

ls -la
ignore2.htmlはローカルに残っていることを確認

これで間違って管理対象外ファイルをコミットしてしまった場合も安心ですね。

参考

Git: gitignoreを忘れた事に随分あとで気づいたら

[まとめ] 現在開催中のKindleセール情報はこちら