Gitを使ってると、時々、
git add でファイルをステージングしたけど、やっぱり取り消したい…
という状況に直面することがあるかと思います。
安心してください、(その方法)ありますよ!
この記事では、git add をした後にその操作を取り消す方法について解説していきます。
すぐに知りたい人向け(結論とコマンド)
最初に結論をお伝えします。
git add
を取り消すためには、以下のコマンドを使用します。
git reset HEAD <ファイル名>
たとえば、index.js というファイルをステージから外す場合は、以下のようにコマンドを実行します。
git reset HEAD index.js
これで、index.js のステージされた状態が解除されます。
以降はもう少し詳しく知りたい方向けです。
具体的な例で確認してみましょう
ここで、具体的な例を一緒に見てみましょう。
例えば以下のようなパターンに陥ったとします。
- ファイル
index.js
を編集 git add .
で全てのファイルをステージに追加- 「index.js はまだステージしないほうがよかった…」と気づく
コマンドの流れ
まず、現在のステージされた状態を確認するために、git status
コマンドを実行します。
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.js
index.js
がステージに追加されているのがわかりますね。
このファイルをステージから外すためには、以下のコマンドを実行します。
git reset HEAD index.js
再び git status
で状況を確認すると、index.js
はステージから外れ、再び「変更がある状態」になっています。
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: index.js
こうすることで、index.js
はステージングから戻せます。
なお、ファイル変更を破棄するわけではなく変更はそのまま残っているので安心してください。
よくある質問と注意点
Q: 「git reset HEAD ~」 でファイルの変更内容は消えますか?
いいえ。
git reset HEAD
は、ステージングエリアに追加された変更を取り消すだけなので、
ファイルの内容はそのまま残ります。
作業中の内容が消えてしまう心配はありませんので、安心してくださいね。
Q: 「git reset HEAD ~」 は他にどんな用途がありますか?
git reset HEAD
は、コミット前に誤ってステージされたファイルを取り消す際に使います。
コミット後の取り消しなども git reset
コマンドでできますが、
今回はコミット前のステージの取り消しに焦点を当てています。
以上です!
あざした