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以降のすべてのコミットをリプレイします。Commit1Commit2Commit3correctbranch