git branch tmp # mark the current commit with a tmp branch
git reset --hard Commit1 # revert to Commit1
SO の回答「git の 'git reset' と 'git checkout' の違いは何ですか?」 は、その種の操作について非常に有益です。

Agit reset --hard HEAD~2
は同じことを行います (Commit1
最初に SHA1 を取得する必要はありません)。
Commit2
とはまだ Git ref (ここではブランチ) によって参照されているためCommit3
、いつでも元に戻すことができます ( git checkout tmp
)。
実際、Darienはコメントで言及しています (別のブランチへの移動について) Commit2
:Commit3
誤って間違ったブランチにコミットしたため、移動できました。
git checkout correctbranch
git rebase tmp
git branch -d tmp
これは、最初のブランチが にリセットされているため、ここで機能します。つまり、は新しい ' ' への(Commit1
つまり、ここでは と)git rebase tmp
以降のすべてのコミットをリプレイします。Commit1
Commit2
Commit3
correctbranch