Git リベースを簡単に元に戻すにはどうすればよいですか? 長い手動の方法は次のとおりです:
- 両方のブランチのコミット親をチェックアウトする
- 一時ブランチを作成してチェックアウトする
- すべてのコミットを手動でチェリーピックする
- 障害のあるリベースブランチを一時ブランチを指すようにリセットする
私の現在の状況では、両方のブランチ (1 つは私のもの、もう 1 つは同僚のもの) からのコミットを簡単に見つけることができるため、これはうまく機能します。ただし、私のアプローチは最適ではなく、エラーが発生しやすいと感じています (自分のブランチ 2 つでリベースしたばかりだとします)。
説明: 1 つのコミットだけでなく、複数のコミットが再生されたリベースについて説明しています。
ベストアンサー1
最も簡単な方法は、リベースが開始される直前のブランチのヘッドコミットを見つけることです。再ログ...
git reflog
そして、現在のブランチをそれにリセットします (オプションを使用してリセットする前に、必ず確認する必要があるという通常の注意事項があります--hard
)。
古いコミットがHEAD@{2}
ref ログにあったとします。
git reset --hard HEAD@{2}
Windows では、参照を引用する必要がある場合があります。
git reset --hard "HEAD@{2}"
git log HEAD@{2}
(Windows :)を実行するだけで、候補の古いヘッドの履歴を確認できますgit log "HEAD@{2}"
。
ブランチごとの reflog を無効にしていない場合は、リベースが最終ヘッドに再接続する前にブランチ ヘッドをデタッチするので、単純に実行できるはずですgit reflog branchname@{1}
。ただし、最近この動作を検証していないので、再確認することをお勧めします。
デフォルトでは、非ベアリポジトリのすべての reflog がアクティブ化されます。
[core]
logAllRefUpdates = true