使用TortoiseSVN进行分支和合并的最简单方法是什么?

80

如何使用TortoiseSVN进行分支和合并?请提供非常简单易懂的步骤。

1个回答

185
假设你的工作目录是从trunk开始的:
右键单击 "根工作文件夹" (该术语始终指Windows资源管理器) 并执行 svn update 将您的工作文件夹更新到最新的 trunk 版本。
确保您拥有的版本是稳定的。
右键单击根工作文件夹并执行 svn commit 确保将任何本地更改提交到 trunk 版本。
右键单击根工作文件夹并执行 svn repo-browser
如果您在存储库中还没有分支文件夹: 右键单击 trunk 文件夹上面的文件夹,然后选择 "创建文件夹" 并创建一个 branches 文件夹 (例如,如果您的 trunk 是 http://myserver/svn/MyRepository/MyProj/Trunk,则创建 http://myserver/svn/MyRepository/MyProj/Branches)。
右键单击 trunk 文件夹并执行 Copy To: 并输入您的新分支名称。例如: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch。(不必担心这会浪费很多空间... 这被称为 "cheap copy" ... 它实际上不会复制文件内容,除非它们发生更改)。
关闭 Repo-browser。
右键单击您的工作文件夹根目录,执行: svn switch 选择您的新分支文件夹名称 (例如,http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch)。将其他所有选项保持默认。
现在开始使用您的新分支。达到里程碑时,请右键单击根工作文件夹并执行 svn commit 提交到您的分支。(这不会在 trunk 版本中看到)
如果其他人正在同一分支上工作,请定期从根工作文件夹执行 svn update。这将从分支更新。 (它不会获取来自 trunk 的任何更新)。无论其他人是否在同一个分支上工作,都应定期从主干合并更改,以确保您的分支稍后不会太难集成。要执行定期合并操作:右键单击工作文件夹根目录并执行svn merge。选择“合并一系列修订版本”。在“要合并的URL”下,选择主干(例如:http://myserver/svn/MyRepository/MyProj/Trunk)。将修订版本范围留空,其余保持不变。点击下一步。不要修改任何内容,点击合并。确保所有东西仍然可以工作...如果不能,请进行修复。一旦您满意,请从工作根文件夹执行常规的svn update来从分支更新(即使只有您一个人在分支上工作,也需要这样做以满足SVN的要求)。然后执行svn commit来提交合并的主干更改到分支。您可以随时重复此步骤多次。
一旦您的分支准备好集成,请再执行上述步骤一次并进行最终测试。对分支进行最终提交。
右键单击根工作文件夹,再次执行svn switch,这次切换到主干(例如:http://myserver/svn/MyRepository/MyProj/Trunk)。这将基本上“撤消”您在分支上所做的所有工作,但不要担心...您将会重新获得自己的工作。(它还会报告对您在分支中未更改的文件进行了许多更新,但这些只是“SVN属性”更改...不要担心。)
右键单击您的工作文件夹并执行svn merge。这次,选择“重新整合一个分支”。对于URL,请输入您的分支(例如:http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch)。其余保持不变,然后点击下一步。不要修改任何内容,点击合并。现在,您已经拥有所有在分支上所做的工作,以及来自主干的最新工作。进行最后一次测试。一切都应该正常工作,因为这应该是您在分支中上一次测试时使用的相同文件集。右键单击您的根工作文件夹并执行svn commit。提交所有内容,甚至是您没有在分支上工作的文件(它们只有“SVN属性”更改,但提交它们可以帮助SVN跟踪所有修订版本)。
主干现在拥有您的所有分支工作以及在您在分支上工作时在主干上完成的所有工作,并且它们全部都正常工作。此外,SVN具有所有文件的完整历史记录,包括在您在分支上工作时检入的修订版本。
可选:进入Repo-browser,右键单击您的分支文件夹(例如,http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch),然后选择“删除”。这对主干没有任何影响,您也不再需要该分支。(即使您真的很偏执,也不用担心,因为如果您真的需要,您甚至可以随时从Repo浏览器中恢复您已删除的分支。) 欢迎留言评论!

37
我说的是“最简单”的意思,而不是“简单” :) - JoelFan
1
谢谢!你是第一个真正感谢我的人(虽然有点赞和收藏 :))。 - JoelFan
1
据我所知,从同一分支合并不会超过一次。 - JoelFan
1
这确实非常有用。 - Avil
通常我会跳过长篇回复,但这个每一行都非常有信息量。非常感谢。 - Shanadas
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接