Gitで、例えば間違えて管理下におきたくないファイルをコミットしてしまった場合に、ファイルを残したまま管理外にしたいとする。
この段階で.gitignoreに書いても反映されないので、以下で対処。
1. コミット済みのリソースを管理対象外にする
リポジトリ内で以下コマンド実行。
$ git rm -cached ファイル名
$ git rm -cached -r ディレクトリ名
この後コミットする。もちろん.gitignoreにも書いておこう。
2. git addの取り消し
まだコミットはしておらず、git addしただけのタイミングでは以下で対処。
$ git reset ファイル名
$ git reset /ディレクトリ名/
ただし、一番最初に実行したgit addを取り消すには 1.と同様に git rm --cached xxxx
を使うことになる。(レポジトリ内にリセット対象が存在しないため)
気をつけているつもりでも、特に一番最初のタイミングは「うっかり」やっちゃいがちなんだよな。
ついでに.gitignoreの書き方。
.gitignore
# ディレクトリを無視
/ディレクトリ名/
# ファイルを無視
/ファイル名
先頭のスラッシュなしでファイル名のみ記述した場合、どのディレクトリかは問わない。スラッシュをつけた場合、.gitignoreが存在するディレクトリ内のファイルが対象となる。ワイルドカードや正規表現も使用可能。