2010-06-01 272 views
65

我一直在爲我所有的項目使用SVN。 有時項目B源自項目A的副本。 當項目A有一個通用更改時,我可以在目錄B中使用svn merge A,它將合併這些更改。git合併不同的存儲庫?

現在,如果我想使用git。我不喜歡將我的所有項目放在同一個存儲庫中,因爲我必須克隆的所有內容,並且不能像SVN中那樣選擇一個項目。 但是每個項目都有一個存儲庫,我如何像以前一樣使用SVN做同樣的事情?

的問題是: 什麼是結構,如果我想要多個子項目,真正所有涉及到一個原始的項目,並保持同步的最佳方式?而且,我也希望能夠檢查出來單獨

+1

你最好看看git-submodule(http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html)。 – Cascabel 2010-06-01 12:53:22

+0

@Jefromi但源文件基本上來自相同的歷史,這將意味着我有兩個副本的文件?我認爲子模塊更多用於跟蹤外部庫,將其作爲獨立文件包含(不合並)? – baloo 2010-06-01 13:56:01

+0

沒關係,我沒有看到你說B是副本A.讀你的「問題是」,你在哪裏說「子項目...涉及到一個原始項目......同步」我認爲你的意思是取出原始項目的塊,但保持它們在元項目中同步。 – Cascabel 2010-06-01 21:51:26

回答

113

如果你有兩個項目,proj1proj2和希望的proj1更改合併到proj2,你會做這樣的:

# in proj2: 
git remote add proj1 path/to/proj1 
git fetch proj1 
git merge proj1/master # or whichever branch you want to merge 

我相信這和你在SVN中所做的一樣。

+0

但是將這樣合併的改變#2軌道合併了改變#1嗎? 如果我記得正確,每次添加新更改時,我都必須重新合併所有更改(並糾正衝突)以進行所有更改。這並沒有發生SVN方式 – baloo 2010-06-01 13:50:52

+0

當然,合併工作照常。您不必「重新整理所有更改」。這只不過是通常的合併,你可以使用遠程服務器。 – 2010-06-01 14:12:50

+0

如果我沒有遙控器怎麼辦?我想做同樣的事情(將projA合併到projB中),但我只在本地工作而沒有遠程控制。 – 2015-12-23 23:22:59