Git – reset – コミットの巻き戻し

概要

  • git resetは指定したコミットの実行直後まで処理を巻き戻す
  • それより後のコミットの実行結果は取り消され、履歴も消される
  • コミットの指定には、HEADからの相対指定による方法と対象コミットの絶対指定による方法がある
  • 直前のresetのコミット位置はORIG_HEADに保持されているので、resetの取り消しは可能

準備

Git – タグで使った以下のリポジトリーを流用。

最新のsample.txtの内容を確認。

HEADからの相対位置でreset

HEADから2つ遡ったcommit-1終了時までresetするため、HEAD~~を指定。

get reset --hard HEAD~~

あるいは2つ前を数値指定することもできる。

get reset --hard HEAD~2

ログを確認すると、commit-1以降のコミットがなくなっている。

sample.txtの内容も、commit-1実行直後の内容になっている。

resetの取り消し~ORIG_HEAD

reset前のコミット位置はORIG_HEADに保持されている。以下のコマンドで、直前のresetを取り消すことができる。

git reset --hard ORIG_HEAD

ログも元に戻っている。

コミットを絶対指定したreset

遡りたいコミットのチェックサム(の一部)やタグを指定してリセットできる。

先の例でcommit-1まで遡りたい場合、以下は等価。

  • git reset --hard f69f176435cf6436c3b3329af644999ba96da862
  • git reset --hard f69f176
  • git reset --hard beta

チェックサムの一部は元のチェックサムの一部になっていて、git log --onelineでも表示される。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です