最も簡単な方法はgit reflog
、ブランチの元のヘッドを見つけるために呼び出しgit reset
、古いコミットを呼び出すことです。
ただし、別の PC のリポジトリなど、一部の状況では reflog を使用できません。
git rebase を元に戻し、古いコミットに設定する方法はありますか?
最も簡単な方法はgit reflog
、ブランチの元のヘッドを見つけるために呼び出しgit reset
、古いコミットを呼び出すことです。
ただし、別の PC のリポジトリなど、一部の状況では reflog を使用できません。
git rebase を元に戻し、古いコミットに設定する方法はありますか?
あなたの質問を理解しているかどうかわかりません。私が正しく理解している場合、レポでいくつかの変更を行い、履歴を編集し、プッシュし、別のリポジトリでプルし、そこから履歴の編集を元に戻したいですか? そこには「元の」履歴がないため、それはできません。
あなたが言っgit reflog
たように、それは行くべき道です.なぜあなたがそれを使うことができないのか私にはわかりません. 投稿を編集して、より多くの情報を提供してもらえますか?
そのような状況では、リベースを自動的に「元に戻す」方法はありませんが、別のリベースを手動で行うことができます。たとえば、次の場合:
A---B---C <-- master
\
D---E---F <-- feature
そして、リベースして取得します:
A---B---C---D'---E'---F' <-- master
ブランチを古い状態に戻すには、次のようにします。
git checkout -b feature
git rebase --onto A C feature
git checkout master
git reset --hard C
リベースの内部リセット段階の前にブランチの先端を指すように設定されている (ref) ORIG_HEAD を使用するだけです。-マニュアルを参照してください
そのcheckout ORIG_HEAD
ため、新しいブランチ名を作成し(切り離された頭になるのをやめてください)、途中である必要があります(すべてが接続されているgitk
か、お気に入りのきれいな1行グラフコマンドを確認してください)
あなたがそうするとき、あなたはrebase
歴史を書き換えています。ブランチは別のコミットを指します。古いコミットは破棄されます。それらをリストしてgit fsck --lost-found
、回復を試みることができます。ただし、それらはガベージ コレクションに使用できるため、少し前に実行した場合は、取り返しのつかないほど失われる可能性があります。