2017-08-30 23 views
-1

2人が独自のリポジトリを開始し、今すぐマージするため、異なる履歴を持つ2つの異なるリポジトリになります。異なる履歴を持つ2つの異なるリポジトリをマージする

スタートコードは同じで、git initとremoteの2種類しかありません。

ので、条件が開発D1が開始され、彼のレポは次のとおりです。

スタート - > A-> B-> C->

開発者は、D2が開始され、彼のレポは次のとおりです。

開始→Z→Y→X→

ここで、両方のリポジトリが自分のブランチを新しい作業のためにマージできるようにするために、共通のブランチを作成することが望ましいです。

ほとんどの場合、小さなコンフリクトで作業が分かれており、手動で解決できます。

どのコマンドまたはプロセスが最適であるべきですか?

+0

可能な複製(HTTPS:/ /stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories) – kowsky

+0

その異なる質問はありません。初期SDKはここで同じです。どちらも共通のブランチを持つことを望み、ローカルでマージしてから共通のブランチにプッシュすることができます。 – coder007

+0

[同じプロジェクトの2つのgitリポジトリをマージする]の可能な複製(https://stackoverflow.com/questions/33669726/merge-two-git-repositories-of-same-project) – phd

答えて

0

私の提案は(することができますが、が、他の-レポ言った)ただそこにブランチを作成し、(のは最初-レポを言ってみましょう)プリンシパルとしてレポのいずれかを取得することです、そして、ダンプ/コピー(なしのgitコマンド、単なるコピー)の先端他-レポ一レポがヘッドとして-他-レポという作業ディレクトリに、変更をコミットし、マージ、他の-repoは、first-repoの「master」ブランチのHEADに分岐します。

コミット履歴を保持したい場合は、リベースすることができます。

+0

はい、それは動作させるが、ここでポイントは両方の履歴を持ちたいと考えて、可能であれば新しいレポを取得したくないということです。彼らは自分のgitで可能な限り続行したいだけです。 – coder007

+0

@ coder007その後、リベースすることができます。 –

+1

実際には、共通基盤のない2つのコミットをマージできます。 Gitは警告なしでこれを行うために使用されました。今度は '--allow-unrelated-history'が必要です([David Guanの答え](https://stackoverflow.com/a/45951036/1256452)参照))。どちらの場合でもGitは "共通の基底"として実際には空のツリーであるため、両方の分岐ヒント(この合成マージベースと比較して)は完全に "すべてのファイルを追加"で構成されます。それは時々あなたが望むものであり、時にはそうではありません。 – torek

0

私の提案:
それはD1のレポやD2のレポで行うことができます :

D2の側については

git remote add [name-for-D1-repo] [D1-repo-url] 
git fetch --all 
git merge [name-for-D1-repo]/[D1-working-branch] --allow-unrelated-histories 
[次の2つのGitのリポジトリをマージするにはどうすればよい?]の
+0

大抵の場合、タイプミスです: 'git fetch --all'です。'--allow-unrelated-history'フラグはnew-ishです。 'git merge'がそれを拒否した場合は、常にフラグを仮定する古いGitを持っています。 – torek

関連する問題