
ファイルをgit addでステージングしたけど、間違えたから取り消したいな。
git addを取り消してファイルをステージングエリアからワークツリーに戻したいときがあると思います。
今回は、git addの取り消しをコマンドで行う方法を解説します。
なお、ステージングではなくコミットを取り消したいという方は、下の記事をご覧ください。
git add(ステージング)を取り消す
今回触れるのは、git add(ステージング)を取り消し、ファイルをステージングエリアからワークツリー(作業ディレクトリ)に戻す方法です。

この際、状況的に2つがあると思います。
- 特定のファイルのみステージングを取り消したい
- 全てのファイルを取り消したい
それぞれの状況でコマンドが違うので、それぞれ解説します。
特定のファイルのみgit add(ステージング)を取り消すコマンド
特定のファイルを指定してgit add(ステージング)を取り消すには、git rm --cachedコマンドを使います。
- git rm --cached [ファイル名]
- 指定したファイルをアンステージ(ステージングの取り消し)する
例えば、今下記7つのファイルがステージング(git add)されているとします(緑文字がステージングされているファイル)。

この中からreset.cssのみアンステージ(ステージングの取り消し)したい場合は、下記コマンドを入力すればOKです。
$ git rm --cached reset.css
実行後git statusコマンドで確認すると、reset.cssのみステージングエリアから外れたことがわかります。

ファイルは複数指定することも可能です。
例えば「index.html」と「main.js」2つのファイルをアンステージしたい場合は、下のコマンドを入力します。
$ git rm --cached index.html main.js
再度git statusを見ると、「index.html」と「main.js」のステージングが取り消されました。

全てのステージング(git add)を取り消すコマンド
git addしたステージングを全て取り消すには、git resetコマンドを使います。
- git reset
- ファイルを全てアンステージ(ステージングの取り消し)する
では、すべてのステージングを取り消してみましょう。
$ git reset
もう一度git statuで確認してみましょう。
すべてのファイルのステージングが取り消されましたね。

まとめ
git add(ステージング)を取り消す方法を解説しました。
今回のポイントは、次の2つです。
- ファイル名を指定して取り消したい → git rm --cachedコマンド
- 全てを取り消したい → git resetコマンド
比較的よく使うコマンドなので、この機会に覚えておきましょう。