2011-05-18 87 views
1

目前我一直與GIT合作,並非常滿意。顛覆分支/切換

由於一些項目的限制,我們接管了一個已經啓動的項目,最近碰到1.0生產版本。

現在我想分支穩定版本1.0,我們繼續在樹幹中開發。

現在我的結構是這樣的:

branche 
--app-1.0 

trunk 
--app 

現在兩個場景:我一直在後備箱發展。我修復了一個也影響版本1.0的bug。在一個Java類中。它只是改變了一行代碼。我如何將這個提交到app-1.0,而不用重寫「old」類,除了這一行?

第二種情況:有人問我檢查是否有錯誤。我切換到應用程序1.0,找到bug,修復它,我偶然發現第二個bug,修復它,將其提交到app-1.0。我如何將這個提交給trunk?

在這兩種情況下合併命令是否正確?

什麼是最佳實踐?

在我的GIT上,我總是反其道而行:我創建了一個分支app-1.0 app-2.0,在這裏我開發了它,當我發現它穩定時,我將它合併到樹幹中,穩定的版本。

我希望你們能幫助我:-)

+0

如果你知道Git,爲什麼不用'git svn'來滿足顛覆回購和像Git一樣使用Git呢? – eckes 2011-05-18 14:26:18

+0

我們正在開發管理硬件,事件開發電腦是特殊的,我們可能不會改變任何東西:( – Jan 2011-05-18 14:57:22

+0

,你不能執行從外部高清/ USB棒的msysgit的便攜式版本? – eckes 2011-05-19 20:35:23

回答

2

對於這兩種情況:你合併!

從SVN書:

一個分支合併回主幹(假定你有一份主幹的工作副本,以及該分支在修訂版本250創建):

$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch 
U myproj/tiny.txt 
U myproj/thhgttg.txt 
U myproj/win.txt 
U myproj/flo.txt 

如果你在分支修訂23,並要在主幹的修改合併到分支,你可以從你的分支的工作副本中做到這一點:

$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors 
U myproj/thhgttg.txt 

http://svnbook.red-bean.com/en/1.0/re16.html

1

您可以輕鬆地將單個修訂從主幹合併到分支或從分支到主幹。合併是正確的命令。

如果你有分公司簽出,你可以這樣做:

svn merge -r <from_revision>:<to_revision> http://host/path/to/trunk 

svn merge -c <revision> http://host/path/to/trunk 

-c相當於-r <revision-1>:<revision>)。

在SVN中,合併是通過獲得兩個修訂版之間的差異並將其應用於您的工作目錄來實現的。合併後,您必須提交更改。如果您想要將分支的bug修改爲trunk,請轉至您的主幹工作目錄,並從分支URL合​​並。

+0

我也建議看看http://www.orcaware.com/svn/wiki/Svnmerge.py - 它簡化了問題中兩種情況下的合併。 – SteveMc 2011-05-18 14:41:54