2

この質問の設定には、注意深い言葉遣いが必要です。

可能な限り単純なリポジトリから始めます: 1 つの単一のコミット (必要に応じて空にすることもできます)。

この元のワンコミット リポジトリから、それぞれ/path/to/repo1とで 2 つの別個のクローンを作成し/path/to/repo2ます。ここで、これら 2 つのクローンのそれぞれが、他のクローンとは独立して、単純な線形履歴として進化すると想像してください。

Aがクローン作成時の元のリポジトリの単一のコミットである場合repo1repo2状況は次のようになります。

repo1:

A-----B-----C-----D-----E-----F-----G-----H-----I-----J-----K-----L


repo2:

A-----M-----N-----O-----P-----R-----S-----T-----U-----V

ここで、結果のコミット グラフが次のようになるように、両方のクローンを結合します。

   ,--B-----C-----D-----E-----F-----G-----H-----I-----J-----K-----L
  /
 A
  \
   `--M-----N-----O-----P-----R-----S-----T-----U-----V

私は多くのタックを試しましたが、上記のようなグラフは得られません...

4

2 に答える 2

3

これはハックなしで私にとってはうまくいきます:

git clone -o repo1 path/to/repo1 target
cd target
git remote add repo2 path/to/repo2
git fetch repo2
git branch master2 repo2/master

この時点で、mastertrackingrepo1/mastermaster2trackingの 2 つのローカル ブランチが作成されますrepo2/master

、、、... 、、のgit log masterようになります。LKJCBA

、、、... 、、のgit log master2ようになります。VUTNMA

于 2013-02-27T09:13:24.957 に答える
0

それほど難しくないようです。

1 つのリポジトリに結合する場合は、まず 2 つのブランチが必要です。

そして、clone1をbranch1と呼ばれるリモートにプッシュするだけです

clone2 をリモートという名前の branch2 にプッシュします。

後で任意のリポジトリに戻り、最新のコードをフェッチします。

ブラ、ティム

于 2013-02-27T04:25:22.463 に答える