2016-12-13 479 views
1

我有從一個共同分出兩條的Git分支提交,說分支A和分支B如何將兩個分支分支並排合併成一個分支?

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

雙方承諾a''b''含有大量的現在被用於不同的應用,雖然類似的文件。我想保留兩個文件結構在a''b''

現在,我想通過將B的內容添加到A的子目錄中來合併兩者。

樣本情況將是script.py在提交o其中包含print ('original')。在分支A中,文件在整個一系列提交中變爲print ('some feature A');而在分支B中,文件在一些提交中也變爲print ('another feature B')

我怎麼會現在結束的一個分支,我有文件

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

print ('some feature A')print ('another feature B')爲內容?

注:我想保持增量的歷史記錄,無論是A版的script.py和B版B/script.py的情況下才能夠git blame兩個文件。

+0

你很難理解你的情況和你想達到的目標。你想把'B'合併到'A'但保持'B'不變嗎?如果是的話,我會建議從'B'創建一個新的分支,然後檢查'A'並將其與'C'合併。 'B'仍然處於提交狀態。 – sp1nakr

+0

@ sp1nakr這將工作在現有的文件/ HEAD之後的內容 - 然而,我會失去'A'的歷史,從'A'和'B'分開的提交... – TheXMA

+1

東西沿着這些線但從相同的原始提交開始,而不是兩個單獨的存儲庫: 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) 
相關問題