3

これは基本的に、マスター上の大規模なクラス C が 2 つの小さなクラス C1 と C2 にリファクタリングされた結果です。その後、C は C2 のサブクラスになり、下位互換性のためにスケルトン バージョンに削減されました。その時点から、マスターには C、C1、C2 が含まれていました。そのマスター コミットで git は、C の名前が C1 に変更されたと述べました。ブランチは、これが発生する前に最後に更新されました。(関係するファイルを視覚化するのに役立つ場合は、すべての C++ コード)

明らかに、ブランチを master にリベースしようとしたときに、解決する必要のある競合がありました。

いつものように、mergetool を使用しました。

したがって、mergetool は次のように表示されます。ローカルでは、C のスケルトン バージョンを使用しています。ベースとリモートでは、C に多くの変更が加えられています。

C のスケルトン バージョンは Local に存在するため、Base と Remote からの変更は実際には C1 に入り、C はそのままにしておく必要があると結論付けました。

私の質問は、どうすればいいですか?

4

1 に答える 1

4

このリベース インスタンスにある可能性があります。マージの競合をより直接的に解決する必要があります。

    git checkout --ours C
    git show :1:/path/to/C # Base から C1 にコピーする必要があるものを確認します
    git show :3:/path/to/C # リモートから C1 にコピーする必要があるものを確認します
    git add /path/to/C
    git add /path/to/C1
  • git commit
于 2010-06-02T05:43:17.273 に答える