LoginSignup
0

More than 1 year has passed since last update.

gitの変更を取り消したい【状況別】

Posted at

誤ってgit add/commitした時、叩くべきコマンドを忘れがちなので、復習&備忘録として投稿します。

ワークツリーの変更を取り消す

$ git checkout --ファイル名 #ファイルの変更を取り消す
$ git checkout --ディレクトリ名 #ディレクトリの変更を取り消す
$ git checkout --. #全ての変更を取り消す

ステージの情報をワークツリーに上書きすることで、ワークツリーの情報を元に戻す仕組み。

ここでは、git add や git commit していないことを前提としているので、ステージの情報が更新されていない。そのため、ステージの情報を用いて元に戻してる。

git add を取り消す

$ git reset HEAD ファイル名 #ファイルの変更を取り消す
$ git reset HEAD ディレクトリ名 #ディレクトリの変更を取り消す
$ git reset HEAD. #全ての変更を取り消す

リポジトリ(今いるブランチの最新のコミット)の情報をワークツリーに上書きすることで、ステージの情報を元に戻す仕組み。
注意点は、ステージの変更は取り消されたが、ワークツリーの情報は取り消されないこと。

git commit をやり直す(差し替える)

$ git commit --amend

一度コミットした内容を修正したい場合、
→ ワークツリーを変更
→ git add でステージ
→ git commit —amend
で直前のコミットを上書きすることができる。

注意点はpushしたcommitはやり直しはできないこと。
例えば、自分がpushしたリモートリポジトリの情報をAさんがワークツリーに取り込んで作業をしている場合、
自分がamendコマンドで修正を加え、pushすると、Aさんがpushする時にリモートリポジトリの履歴状態と内容が違うため、pushできなくなる。

復習したことで、理解が深まりました。

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
0