130

私はインタラクティブなリベースを介して混乱に陥りました、そして今それを中止したいと思います。(つまり、インタラクティブリベースモードに入る前のポイントに戻ります。私の場合は経由git pull --rebaseです。)これを行う方法は経由のようですgit rebase --abortが、機能しません。

$ git rebase --abort
error: Ref refs/heads/master is at 55b388c141b1485b1acd9e050dbeb0eb90ef2ee7 but
expected b918ac16a33881ce00799bea63d9c23bf7022d67
fatal: Cannot lock the ref 'refs/heads/master'.
Could not move back to refs/heads/master

インタラクティブリベースモードから抜け出し、それへのすべての参照をクリーンアップするにはどうすればよいですか?(git reset --hard成功しますが、リベースモードから抜けることはありません。)

4

2 に答える 2

87

画面に表示されるアドバイスに従って、最初にマスターのHEADを期待するコミットにリセットしてください。

git update-ref refs/heads/master b918ac16a33881ce00799bea63d9c23bf7022d67

その後、リベースを再度中止します。

于 2011-02-24T12:38:31.070 に答える
1

Git 2.34(Q4 2021)を使用するgit rebase --abortと、より信頼性が高くなります。

" git rebase <upstream> <tag>" manは、タグオブジェクトをHEADにピーリングする代わりに誤って書き込もうとしたため、途中で中止すると失敗しました。

Phillip Wood()によるcommit 7740ac6、commit 1d18826commit 35f070b(21 Sep 2021)、commit d045719commit 1e14bc1commit 0b7ae73commit 54627dbcommit 7390c65commit e505f45commit f20c1fb(13 Sep 2021)を参照してください。( Junio C Hamanoによってマージされました---コミット7cebe73、2021年10月6日phillipwood
gitster

rebase:間接参照タグ

サインオフ-作成者:Phillip Wood

git rebase <A> <B>' ' manで始まるリベースは、概念的には最初にその状態から開始してcheckout <B>実行されます。 ' ' manこのようなリベースの途中で、チェックアウトした状態に戻るはずです。git rebase <A>
git rebase --abort<B>

これ<B>は、がコミットを指すタグであっても、コマンドがで再実装されたGit2.20.0までは機能していましたC
このコマンドは、タグオブジェクト自体をチェックアウトできないと文句を言います。これは技術的には正しいかもしれませんが、ユーザーが要求したことではありません。

lookup_commit_reference_by_name()解析時にを使用して、この古い回帰を修正します<B>。スクリプトバージョンでは、タグを渡すコマンド(たとえば、' ' man)がタグ自体を剥離し
たため、タグを剥離する必要はありませんでした。git reset

于 2021-10-10T15:18:38.027 に答える