git addしたファイルを取り消しする方法!

間違えてgit addしてしまった場合の取り消し方法(git addしたファイルをgit addする前の状態に戻す方法)を解説します。
また、その取り消しする方法が効かない場合や、特定ファイルのみの git add を取り消す方法も解説します。

コンテンツ [表示]

  1. 1git addしたファイルを取り消したい
  2. 2git addしたファイルを取り消しする方法
  3. 2.1前回のcommit以降のgit addを取り消し(よく使う方法)
  4. 2.2前回のcommit以降のgit addを特定ファイルのみ取り消し
  5. 2.3最初のgit addの取り消し
  6. 3まとめ

git addしたファイルを取り消したい

不要なファイルまで git add してステージング状態にしてしまい、一旦 git add 前の状態に戻したい場合に、git add を取り消す方法を解説します。

なお、 すでにaddされているファイル等は以下のコマンドで確認できます。

add取り消し前の確認

git status  #現状のgitの状態を確認。実行すると以下のような表示が出る
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   src/index.html  #add済みのファイル

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   src/scss/index.scss  #addされていない変更されたファイル

git addしたファイルを取り消しする方法

前回のcommit以降のgit addを取り消し(よく使う方法)

まず最初に、開発中間違って git add してしまった場合(かつ、まだ commit はしていない場合)は以下のコマンドを実行することで git add を取り消せます。

ただし厳密にはaddを取り消しているわけではなく、インデックスの状態をHEADの位置(通常は直前のcommit地点)に戻しているため、commit せず何度もgit add をしていた場合はそれら全ての git add が取り消されますので注意してください。

git add の取り消し

git reset HEAD

上記を実行することで、git addされているが commit されていないファイルがステージング前の状態になり、インデックスは前回の commit 地点に戻ります。

前回のcommit以降のgit addを特定ファイルのみ取り消し

全てのgit addされたファイルではなく、特定のファイルのみ add を取り消したい場合には以下のようにファイルをパスで指定します。

特定ファイルのgit add の取り消し

git reset HEAD ファイルのパス

# 例:pagesフォルダ内のsample.htmlというファイルの変更のみ add を取り消す
git reset HEAD pages/sample.html

最初のgit addの取り消し

git init 直後の git add を取り消したい場合には、直前の commit 地点がないので上記方法は使えません。その場合は以下のように git rm コマンドに --cached オプションをつけることで、指定したファイルをインデックスから削除します。

なお、この --cached オプションがないとファイルが削除されてしまうので注意しましょう。

-r オプションはディレクトリを削除する際に使用するオプションなので、ファイルを指定する際にはなくて構いません。)

最初のgit addの取り消し

# git add されたファイル全てを取り消す
git rm --cached -r .

# 特定のファイルを指定して取り消す
git rm --cached -r ファイルのパス

まとめ

いかがでしたでしょうか。本記事では git add の取り消しについて解説しました。

なお、ファイルの差分を確認する方法( git diff )については以下の記事で解説しています。

あわせて読みたい
git diffでファイル名のみの差分を表示する方法!のイメージ
git diffでファイル名のみの差分を表示する方法!
git diffでファイル名のみの差分を表示する方法を紹介します。通常git diffではファイルの内容の差分まで表示しますが、ファイル名の差分のみを見たい場合にはオプションが必要です。
GeekHive採用サイト

関連記事