4

私たちのプロジェクトには、非常に奇妙な git 履歴があります。まず、次のような歴史を持つ別のプロジェクトがありました。

レポ1:

a---b---c

それから私たちのプロジェクトがありました

レポ2:

u---v---w

repo2 のコードで repo1 が必要だったので、「賢い」プログラマーは read-tree を使用して repo1 の最後のコミット (c) を w に読み込みました。

u---v---w---w'

ここで、w' にはコミット c が含まれていましたが、その履歴はありません。その後、両方のリポジトリにいくつかの変更が加えられ、次の履歴が作成されました。

a---b---c---d---e

u---v---w---w'---x---y

ここで、混乱を一掃し、repo1 の変更をリポジトリに組み込みます。ただし、2 つのリポジトリを単純にマージすると、ブランチが履歴を共有しないため (実際には共有しているが、git は知らない)、極端な数の競合が発生するため、git は 3 方向のマージを実行できません。

では、どうすれば 3 方向のマージを行うことができるでしょうか。不足している履歴エッジを「追加」する方法はありますか。つまり、次のようなものを作成します。

a---b---c---d---e
          \
u---v---w--w'---x---y
4

1 に答える 1