gitで不要なaddを取り消す方法

適当にgit add .とやっているとログやらdb/development.sqlite3やらがtreeに入ってしまって困る。
こういうときは、
git diff --cached
でcommitされようとしている内容を確認して、
不要なファイルを見つけたら、
git rm --cached <ファイル名>
git rm -r --cached <フォルダ名>
とやってtreeから削除する(ファイル自体はFS上に残る)
そしてgit commit。


すっきり。

追記と訂正2011/09/26

以下のコマンドの方が、間違いがなくて良いです。


git reset HEAD -- <ファイル名>

これは、直感的に言うと、現在のディレクトリの内容は変更せずに、git addやgit rmのような、gitへの変更通知だけを無かった事にするコマンドです。

実は、これgit statusで表示されるメッセージに書いてあります。
「取り消したい時はこうしてね」と・・・。


$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# deleted: file
# modified: file2
# new file: file3
#