3

リポジトリの履歴の最初の方でコミットを変更する必要があります。そのコミット以来、おそらく何百ものブランチ、マージ、およびマージの競合が発生しています。

--preserve-mergesオプションを指定してインタラクティブリベースを使用しようとしましたが、「CONFLICT(コンテンツ):Foobar.cppで競合をマージする」に似た何百もの競合エラーが発生します。それらを手動で再解決することは、不可能ではないにしても、非常に非現実的です。

'rerere'機能について聞いたことがありますが、たった今なので、有効にしていません。

4

3 に答える 3

4

Rerere はここでは役に立ちません。

を探していgit filter-branchます。変更によっては、ツリー フィルターよりも高速なインデックス フィルターを使用できる場合があります。これにより、後続のすべての SHA-1 が変更されます。

--allすべての参照が更新されるように、パラメーターを必ず含めてください。これは、SHA-1 が存在しないリポジトリを参照するため、このリポジトリをサブモジュールとして使用するリポジトリを台無しにします。これを修正するには、さらにスクリプトを作成する必要があります。

また、あなたが一緒に働いている誰かがプッシュされていないコミットを持っていた場合、彼らはgit rebase --onto歴史の新しい場所に彼らの未解決の仕事をしなければなりません.

今後数年間で、特にサブモジュールが関係する場合に、そのような悪ふざけを実行するためのサポートが増えることを願っています。

于 2013-01-15T07:31:52.973 に答える
-1

これは私が試すものです。保証はありませんが、試してみる価値はあります

  1. 再レレを有効にする( git config rerere.enabled true)
  2. rerere.autoupdateを有効にする( git config rerere.autoupdate true)
  3. 古いコミットに戻って修正してから、マージしてください。うまくいけば、rerere はあなたが進むにつれて学習し、競合を自動的に解決し始めるでしょう。
于 2013-01-15T07:26:50.993 に答える