2016-11-17 8 views
0

私のシナリオ:は別の既存のリポジトリ内の自己作成したフォルダの中に、既存のGitリポジトリをマージ

I持っている2つの既存のGitリポジトリ:私はsubtree-経由でプロジェクト-BにプロジェクトA合併している

Project-A 
Project-B 

マージ問題なし。ほとんどがここで第三の答え以下:

How do you merge two Git repositories?

しかし、私はプロジェクト-B内で行われたフォルダにプロジェクト-Aをマージする必要があります。 Project-B自体の中にはありません。私はこのようになり得続ける:私は必要な構造がこれです

Project-B 
    - Components - self made folder via git add component/README 
    - Project-A 

を:

Project-B 
    - Components - self made folder via git add component/README 
     - Project-A 

なぜとき、私はので、私はよく分からないComponentsフォルダ内からプロジェクト-Aをマージしてきました私は、Project-Aをコンポーネントの外で続けていますか?

また、プロジェクトAをマージするときに、同時にすべてのブランチをマージしたいのですが、私は "git merge Project-A"を試みていますが、Gitではできませんというメッセージが表示されます。だから私は "git merge Project-A/master"のようなことをしなければなりません。しかし、Project-Aには、コンポーネントフォルダにプッシュする必要がある20の異なるブランチがあります。一度にすべてのブランチをマージできますか?

おかげ

答えて

1

あなたは上記示したよう第二構造を実現するためにgit subtree add --prefix=Components/Project-A <Project-A’s address> branchnameを使用することができます。

そして、あなたはあなたが成功しgit merge Project-Aまたはgit merge Project-A/masterを使用することはできません、リモートプロジェクト-原因

から/ Components/Project-Aディレクトリに変更をプッシュするgit subtree push --prefix= Components/Project-A <Project-A’s address> branchnameを使用することができます。コンポーネント/プロジェクト-Aに存在するものはブランチとしてではなく、プロジェクト-Bのサブプロジェクトとして存在します(git branchを使用して存在するブランチを表示すると、これらのブランチはProject-Bにしか属しません)。 Project-Aはブランチではないので、Project-Aについて何もマージすることはできません。

+0

次のようにProject-A/masterをプロジェクトBにプッシュすることができます:git merge -s ours --no-commit Project-A/masterですが、すべてのブランチにアクセスしてマージする方法はありません一度。何かが好きです:git merge -s ours --no-commit Project-A/all-branches ..? – bschmitty

+1

@bschmitty、 'git remote add Project-A <プロジェクト-AのURL>'を使ってリモートを追加したと思います。この方法でのみ、Project-Aについてのgit mergeを使用することができます。また、すべてのブランチを一度にマージすることは不可能です。マージの概念と同じように、ブランチは2つのブランチに一度だけ影響します。それがあなたを助けることを願って:) –

+0

@bschmitty、こんにちは、あなたが望むものを手に入れましたか?はいの場合は、誰と同様の質問をするのに役立つので、回答としてマークすることはできますか? BWTでは、Project-AをProject-Bにマージする必要はありません。すでにProject-Aのものをstep-1に追加しているだけなので、Project-Bにコミットしてください。 –

関連する問題