git ドキュメント (および多数の SO スレッド) では、このリセット方法が推奨されています。
$ git reset --soft HEAD^ ;# go back to WIP state <2>
$ git reset <3>
.2. これにより、コミット履歴から WIP コミットが削除され、作業ツリーがそのスナップショットを作成する直前の状態に設定されます。
.3. この時点で、インデックス ファイルには、スナップショット WIP としてコミットしたすべての WIP 変更がまだ含まれています。これにより、インデックスが更新され、WIP ファイルが未コミットとして表示されます。
https://www.kernel.org/pub/software/scm/git/docs/git-reset.html
明らかにそれで問題ありませんが、これらの 2 つのコマンドは次のように置き換えることができるようです。
$ git reset HEAD^
(これは同等です)
$ git reset --mixed HEAD^
これにより、HEAD ポインターとインデックスの両方が前のコミットにリセットされます。実際、このコマンドの結果と前の 2 つの結果に違いはありますか? そうでない場合、2 段階プロセスを好む理由はありますか? それとも、 --soft の動作を明示的に説明するためにドキュメントでそのように行われたのですか?