hello-world
webエンジニアのメモ。とりあえずやってみる。

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

公開日時

時々、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を忘れた事に随分あとで気づいたら


Related #git

bitbucketでRawデータのURLを取得する

bitbucketでRawデータのURLを知りたい時に、以下のように「Raw形式で表示」を選択しても最新のコミットに紐付いたURLになってしまいます。

gitのHEADが設定されなかった場合の対処法

bitbucketで新規リポジトリを作成して、ローカルからgit remote addで設定を行った際に、origin/HEADがないという状態になってしまいました。

git log時に日本語が文字化け

vagrantで作った仮想マシン内でgit logを実行した際に