1. ホーム
  2. git

[解決済み] git commitの代わりに行った "git commit --amend "を元に戻すには?

2022-03-17 23:19:49

質問

間違って前のコミットを修正してしまいました。コミットは、私が特定のファイルに加えた変更の履歴を保持するために別個のものであるべきでした。

その最後のコミットを取り消す方法はありますか?もし私が以下のようなことをしたら git reset --hard HEAD^ を実行すると、最初のコミットも元に戻されます。

(リモートディレクトリにはまだプッシュしていません)

解決方法は?

必要なのは、現在のコミットと同じ内容の新しいコミットを作成することです。 HEAD コミットですが、親を以前のバージョンの HEAD . git reset --soft はブランチポインタを移動させ、次のコミットが現在のブランチヘッドの位置とは異なるコミットの上で行われるようにします。

# Move the current head so that it's pointing at the old commit
# Leave the index intact for redoing the commit.
# HEAD@{1} gives you "the commit that HEAD pointed at before 
# it was moved to where it currently points at". Note that this is
# different from HEAD~1, which gives you "the commit that is the
# parent node of the commit that HEAD is currently pointing to."
git reset --soft HEAD@{1}

# commit the current tree using the commit details of the previous
# HEAD commit. (Note that HEAD@{1} is pointing somewhere different from the
# previous command. It's now pointing at the erroneously amended commit.)
git commit -C HEAD@{1}