2011-05-18 105 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