以前のコミットを変更することはできません。各コミットは一意です。
できることは、新しいコミットで履歴を再作成することです。コマンドの使用git-rebase
私はあなたが今この時点にいることを理解しています:
Pre_A - A - B
\
A1
「B」コミットを失いました。コミットを回復するにはgit-reflog
git reflog
ブランチの最新の位置が表示されますHEAD
。そのうちの 1 つが B コミットです。行頭のハッシュを書き留めます。例:
git reflog
a123b Ammend Commit of Previous A that generates A1 commit
b234c git reset soft to A Commit
c345d B Commit
b234c A Commit ##Look that the HASH is the same that the git-reset##
Bコミットのハッシュを取得したら。ブランチを作成してコミットを回復します。
git branch tmpBranch c345d
この時点で必要なのは、このコミットを「A」ではなく「A1」の新しい履歴に入れることです。これを使用して取得しますgit-rebase
あなたは master ブランチで作業していたと思います。
git checkout tmpBranch
git rebase --onto master tmpBranch~1 tmpBranch
これにより、マスター(A1コミットを指す)でtmpBranchコミット(この場合は1つのコミットのみ、Bコミット)まで、tmpBranchコミットの1つのコミットから履歴が再作成されます。