ChatGPT解决这个技术问题 Extra ChatGPT

将分支与主干合并

使用 TortoiseSVN,我需要在分支中进行更改,然后将它们与主干合并。

我是这个项目的唯一开发者,所以我知道主干没有改变。我正在学习 SVN,以便最终我的团队可以使用它。

基本上,我希望我的树干看起来和树枝一模一样。

在 pre-svn 世界中,我只需复制分支文件夹中的文件,删除主干文件夹中的文件,然后将分支复制到主干。

在 TortoiseSVN 中,我尝试过 Reintegrate a branchMerge a range of revisionsMerge two different trees。似乎什么都没有真正改变主干。我也试过在树干上分支。这给了我一个错误,说主干已经存在。


D
Dave Jarvis

在你的情况下:

将工作副本切换到主干(SVN Switch) 将分支合并到工作副本(SVN Merge) 确保一切仍然编译并正常工作 提交工作副本(主干) 考虑终止分支

在团队环境中,我建议您首先在分支中合并来自主干的最新修改,确保一切都编译并正常工作,然后执行上述步骤(这将是微不足道的,因为您已经测试了更改)。

更新

在第 5 步中,我提到了杀死分支。这是因为一旦功能的分支位于主干中,它就应该被视为主干的一部分。在这种情况下,应该杀死分支,以便没有人继续处理它。如果该功能需要进行重大修改,您应该为此创建一个新分支。

我不会杀死的唯一分支是维护和发布分支,除非不再支持特定版本。

无论如何,您始终可以访问每个修订版,因此终止分支仅用于防止其他开发人员在死分支上进行开发。


您在第 5 步下添加的评论可能最好是第 1 步?当您想使用 TortoiseSVN 合并对话框中的“重新集成分支”时,首先合并来自主干(或基础分支)的所有更改是一项要求。
只有在没有单独的分支和主干工作副本时才需要第一步(将工作副本切换到主干)?
我认为这里缺少的一个主要细节是您为每个步骤单击的文件夹,因此您知道每个步骤的上下文。
g
gsamaras

我认为在 TortoiseSVN 1.8.5 中,合并 |合并两棵不同的树应该可以工作。当您将分支/标签合并回主干时,诀窍是 From URL 是主干,而 To 是标签/分支。奇怪但真实。

来源:Merging

对于不在工作副本中但在标签/分支中的目录,您可能会遇到冲突错误。只需接受冲突并重做合并。


按照tortoisesvn 站点上的说明进行操作后,请确保在合并后提交主干而不进行任何修改。我尝试取消选中一些我不想提交的东西,这会导致一些非递归提交警告。另外,请考虑按照说明删除分支。
D
DevelopingChris

首先将您的工作副本切换到主干。然后做一个合并范围的修订,从分支到主干。此对话框完成后,差异将是您的主干工作副本中的待定更改。您需要提交它们,就像您在工作副本上手动进行更改一样。

在我的使用中,更典型的做法是在构建时保持主干运行并分拆分支。因此,我需要做的唯一合并就是从主干中修复错误并将其放在最新的构建分支上并重新发布该分支。对我来说最简单的方法是,因为你发现合并充其量是笨拙的。是保持最新的分支和主干检出到我的机器,并将文件从主干复制到分支并签入。


“复制”文件时应格外小心。使用类似 TortoiseSVN 的导出以避免损坏隐藏的 svn 目录。
W
Waqas Ahmed

我正在使用 TortoiseSVN 1.9.3,内部版本 27038。

按照以下步骤将分支合并到主干。

1)右键单击主干工作副本并选择以下选项。

https://i.stack.imgur.com/msZUx.png

2)在分支合并到主干的情况下,选择第二个选项,如下所示,然后单击下一步

https://i.stack.imgur.com/u4bTY.png

3) 在 From: 字段中输入主干的完整文件夹 URL。这听起来可能不对,但请记住,主干是您要添加分支更改的起点。在 To: 字段中输入功能分支的完整文件夹 URL。

https://i.stack.imgur.com/AQMMN.png

4)单击下一步并进行测试合并

https://i.stack.imgur.com/a9muh.png

5) 如果测试合并成功,则单击合并按钮。

6)一旦合并成功,然后在主干上提交更改。