11

リベース中にコミットした場合に何が起こるか、そしてこれを簡単な方法で「元に戻す」方法についての適切な説明を探しています。

大規模なコミットがリベースされるシナリオを考えてみましょう。リベース中に競合が発生し、ユーザーは変更のマージを開始します。ここで、ほぼ完了したが、何らかの理由(長い週末など)でgitrebase --continue--を呼び出さなかったシナリオを想像してみてください。翌週、リベース中も作業を再開しました。最後に、git commit --amendを呼び出して、最後のコミットに変更を追加します。変更は、リベースしたコミットになります。

もちろん、リベースを開始したコミットをいつでもチェックアウトして、「ハックスルー」することができます。たとえば、修正からすべてのファイルをコピーしようとすると、その間に導入された変更が失われる可能性があります。

これを修正するためのクリーンで良い方法はありますか?これは私が注意しなければならない特定の状態の1つであり、私は決してそれに終わらせたくありませんが、それでも時々起こります-そして私は物事をまっすぐにするために一日を費やすことになります。

私は本当にすべての助けと提案をいただければ幸いです。ありがとうございました!

4

1 に答える 1

5

この状況に対して2つの解決策が提案されています。

  • 最初の解決策は、最終結果を元のベースコミットにリベースすることです。これには、同様のマージの競合をもう一度解決する必要がありますが、完了したら、コミットは軌道に戻るはずです。

  • 私のために働いた別の解決策は、あなたが修正したコミットと同じポイントから分岐することでした(それはチェックアウトベースとして使用されるべきSHAを運びます)。次に、新しいブランチを作成してを呼び出しますgit merge --no-ff --no-commit --strategy=theirs other_branch。ここで、*other_branch*は不幸なコミットを伴うものです。

于 2012-08-02T11:58:01.963 に答える