2016-12-13 5 views
1

私は共通から分岐2つのgitのブランチがコミット、ブランチA分岐B言っています2つの分岐分岐を1つの分岐に並列してgit-mergeする方法はありますか?

 -- a -- a' -- a'' (branch A) 
    /
-- o -- b -- b' -- b'' (branch B) 

の両方がa''b''今かかわらず、さまざまなアプリケーションに使用されている同様のファイルの多くが含まれているがコミットされます。私は両方のファイル構造をa''b''にしておきたいと思います。

ここで、Bの内容をAのサブディレクトリに追加して、2つをマージしたいと思います。

コミットoにあるscript.pyには、print ('original')が含まれています。ブランチAでは、一連のコミットを通じてファイルがprint ('some feature A')に変更されます。一方、ブランチBでは、コミットによってもファイルがprint ('another feature B')に変更されます。

どのように私は今、私は、それぞれのファイルにprint ('some feature A')や内容などprint ('another feature B')

script.py (from A) 
B/script.py (from B) 

を持っている枝で終わるのでしょうか?

注:Aバージョンのscript.pyとBバージョンB/script.pyの両方の場合のインクリメンタル履歴をいずれかのファイルにすることができるようにするには、いずれかのファイルをgit blameにする必要があります。

+0

あなたのケースが何であるか、そして達成したいことを理解するのは難しいです。 'B'を' A'にマージして、 'B'はそのままにしておきたいのは間違いありませんか?もしそうなら、私は 'B'から新しいブランチを作成し、' A'をチェックアウトし、 'C'とマージすることを提案します。 'B'は依然としてコミットしています。 – sp1nakr

+0

@ sp1nakrこれはHEADの既存のファイル/内容の点ではうまくいくでしょう - しかし、AとBが分かれているコミットからAの履歴を失うでしょう... – TheXMA

+1

これらの行に沿って何か2つの別個のリポジトリの代わりに同じオリジナルのコミットから開始します。 https://saintgimp.org/2013/01/22/merging-two-git-repositories-into-one-repository-without-losing-file-history/ – TheXMA

答えて

1

あなたが望むのはgit subtreeだと思います。特に、このコマンドは、あなたが記述したものとまったく同じです。

git subtree --prefix=B B 

あなたはブランチAでこのコマンドを実行すると仮定すると、それはブランチB内の既存のコードベース全体でサブディレクトリBを作成します。履歴は保存され、接頭辞付きでグラフは次のようになります(m:マージコミット)。

-- o -- a -- a' -- a'' -- m (branch A) 
    \     /
     - b -- b' -- b'' - (branch B)