0

最も簡単な方法はgit reflog、ブランチの元のヘッドを見つけるために呼び出しgit reset、古いコミットを呼び出すことです。

ただし、別の PC のリポジトリなど、一部の状況では reflog を使用できません。

git rebase を元に戻し、古いコミットに設定する方法はありますか?

4

4 に答える 4

3

あなたの質問を理解しているかどうかわかりません。私が正しく理解している場合、レポでいくつかの変更を行い、履歴を編集し、プッシュし、別のリポジトリでプルし、そこから履歴の編集を元に戻したいですか? そこには「元の」履歴がないため、それはできません。

あなたが言っgit reflogたように、それは行くべき道です.なぜあなたがそれを使うことができないのか私にはわかりません. 投稿を編集して、より多くの情報を提供してもらえますか?

于 2012-09-05T15:08:09.543 に答える
1

そのような状況では、リベースを自動的に「元に戻す」方法はありませんが、別のリベースを手動で行うことができます。たとえば、次の場合:

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
于 2012-09-05T16:36:08.860 に答える
0

リベースの内部リセット段階の前にブランチの先端を指すように設定されている (ref) ORIG_HEAD を使用するだけです。-マニュアルを参照してください

そのcheckout ORIG_HEADため、新しいブランチ名を作成し(切り離された頭になるのをやめてください)、途中である必要があります(すべてが接続されているgitkか、お気に入りのきれいな1行グラフコマンドを確認してください)

于 2012-09-05T16:11:58.723 に答える
0

あなたがそうするとき、あなたはrebase歴史を書き換えています。ブランチは別のコミットを指します。古いコミットは破棄されます。それらをリストしてgit fsck --lost-found、回復を試みることができます。ただし、それらはガベージ コレクションに使用できるため、少し前に実行した場合は、取り返しのつかないほど失われる可能性があります。

于 2012-09-05T15:59:30.990 に答える