2012-04-19 59 views
0

我是新來的Git的所以這可能是一個愚蠢的問題...最佳實踐的建議 - Git倉庫合併

背景: 我們已經有了運行或多或少相同的代碼的兩個項目。這兩個項目正在單獨開展工作,幷包含一些獨特的代碼。我們目前正在使用兩個獨立的git存儲庫(每個項目一個)。但項目經理表示希望將來可能合併這些項目。

問題: 我們想使生活更容易爲自己這樣被使用單一回購和分支思考。在git中處理這個問題最好的做法是什麼?

可能性

  1. 單個回購,版本1在主站和用於 第二版本的分支的代碼(以最終合併分支)。但是, 這使我們可以單獨處理兩組代碼? - 我讀過 其他資源,這表明這可能不是好的做法。
  2. 單個回購,最終將包含兩個分支的合併代碼的一個主可以單獨處理
  3. 繼續工作兩個回購並嘗試和手動合併代碼。
  4. 其他建議?

在此先感謝!

回答

0

你的選擇#2聽起來對我最好。該工作流將是(大約):

# create a central repository 
$ git init --bare  # call this 'repo' 

# for projA 
$ git remote add origin /path/to/repo 
$ git checkout -b projA 
$ git push origin projA   # get projA's current master branch on to origin 
$ git branch --set-upstream projA origin/projA 

# ditto for projB 

# Now 'repo' has projA and projB branches and an empty master 

現在,當你決定的東西可以共享,你在其他存儲庫與主合併它,把它推到「回購」,從「回購」把它拿來然後rebase。例如,說projA中的所有內容都可以被認爲是共享的。

# in projA 
$ git checkout master 
$ git merge projA 
$ git push origin master 

# in projB 
$ git checkout master 
$ git pull origin master 
$ git checkout projB 
$ git rebase master 

或多或少。

0

我認爲你應該爲每個開發人員和一箇中心存儲庫提供3個存儲庫2,但在技術層面上,git中沒有中心存儲庫作爲DCVS。你的設置會是這個樣子:

DEV1 - 主
DEV1 - 開發

裝置2 - 主
DEV2 - 開發

中心 - 主

DEV1 &裝置2 - 主應與中心相同 - 主
Dev1 & Dev2 - 開發應融合到中心 - 主人

這將是我認爲的理想方式。

0

這可能是submodules的用例。

您有一個回購,將其命名爲common您的應用程序的公用部分保留在其中。

然後,您將對每個項目有兩個回購:說p1p2。這些回購協議中,有兩個項目的特定部分加上common回購的子模塊:

$ mkdir p1 
$ cd p1 
$ git init 
$ git submodule add /path/to/common common 

做它的方式清楚地分開共同的東西你的項目的具體的東西。

是的,這是回購,但獲得來自common回購新提交到您的p1回購,你會git submodule update。不需要合併。 Git會爲你做。


即使你不打算使用的子模塊,三回購味道不只要需要手動合併爲你不做提交在日誌消息爲intermediate,你提交的156個變化一個去。

做原子提交。
一次提交一次更改。

這樣做,您可以瀏覽日誌commoncherry-pick提交到您的項目回購。