LoginSignup
11

More than 5 years have passed since last update.

元に戻すgitコマンド その6(間違えて git add したら 編)

Posted at

はじめに

Webエンジニアになって2年目。そろそろ、addcopmmitpushpull、あと、ブランチ切ること以外も覚えたいなと思い、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を使ったさまざまな元に戻す方法の記事をまとめています。ぜひ、見てください。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11