誤って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できなくなる。
復習したことで、理解が深まりました。