はじめに
Webエンジニアになって2年目。そろそろ、add
、copmmit
、push
、pull
、あと、ブランチ切ること以外も覚えたいなと思い、Gitでずっと気になってた各種**「元に戻す操作」**を勉強がてら記事を書こうと思いました。
Gitの操作をしていると、失敗して元に戻したい時は結構多いんじゃないかなーと思います。戻したい場面はいくつかあると思います。
今回は、間違えて git add
しちゃって取り消したい時の対処について書いていこうと思います。
どんな場面か?
下記のようなパターンが考えられます。
- 間違えて git add
しちゃって取り消したい時
- 特定のファイルだけgit add
を取り消したい時
解決方法
まず、下の図を見てください。
上記は、コミットまでに必要な2段階手順の模式図1です。
ワーキング(作業)ディレクトリで作業をしていて、間違ってgit add
しちゃってステージングにあるファイルが入ってしまったら、という場面を想定しています。
間違って、practice.txt
というファイルをステージングエリアに入れてしまった場合
まずその確認にはgit status
を使います。
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: practice.txt
このとき、(use "git reset HEAD <file>..." to unstage)
と書いています。これは「ステージングエリアからワーキングディレクトリに戻す場合(unstageする)には、git reset HEAD ファイル名
してね」と書いてます。
なので、いう通りにして見ましょう。
$ git reset HEAD practice.txt
Unstaged changes after reset:
M practice.txt
確認のためgit status
を使います。
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: practice.txt
no changes added to commit (use "git add" and/or "git commit -a")
git reset
は注意が必要
今回は、ステージングエリアから、ワーキングディレクトリに戻しただけなので大丈夫です。
しかし、git reset
のオプション--hard
をつけた場合のコマンドは、完全に変更を削除してまうので注意が必要です。
以上です。
親記事(まとめ記事)
この記事の親記事(まとめ記事?)がありまして、そこでは、gitを使ったさまざまな元に戻す方法の記事をまとめています。ぜひ、見てください。