第 4 章 分支和合并

目录

什么是分支?
使用分支
创建一个分支
在你的分支上工作
分支背后的关键思想
在分支之间复制修改
复制指定的修改
合并的最佳实践
常见的用例
把整个分支合并到另一个
撤销修改
恢复删掉的项
常见的分支模式
切换工作副本
标签
创建简单的标签
创建一个复杂的标签
分支的维护
资料库布局
数据的生存时间
总结

分支,标签和合并是所有版本控制系统的共有的概念。如果你不熟悉这些概念,我们在本章有一个很好的介绍。 如果你熟悉,那么希望你会对看看Subversion如何来实现这些概念有兴趣。

分支是版本控制的基本组成部分之一。如果你要让Subversion来管理你的数据,那么你将会非常依赖这个特性。 本章假设你已经熟悉了Subversion的基本概念(第 2 章 基本概念)。

什么是分支?

假设你的工作是维护你的公司某个部门的文档——某种手册。某天,另一个不同的部门向你要相同的手册, 但是需要为他们“调整”一小部分,因为他们的工作略有不同。

这种情况下你该怎么做?显然你会这么做:你复制一份你的文档的副本,然后开始分别维护这两份文档。 当其中一个部门要求你做一些修改时,你把它们合并到这个或那个副本。

你常常要对两个副本作相同的修改。例如,如果你在一个副本中发现一个拼写错误,很可能另一副本中也有相同的错误。 因为这两个文档绝大部分是相同的;他们只在很小的、特定的地方有差别。

这就是分支的基本概念——就是说,一条与别的线独立的开发线,但是 如果你往回看足够长时间的话,他们仍然共享一个共同的历史。一个分支总是从某些东西的复制品开始, 从那里出发来产生它自己的历史(参见图 4.1 “开发的分支”

图 4.1. 开发的分支

开发的分支

Subversion有帮助你维护你的文件和目录的并行分支的命令。它使你可以通过复制你的数据来创建分支,并记住这些副本是 和另一个有联系的。它也帮助你把修改从一个分支复制到另一个。最后,它能使你工作副本的不同部分反映不同的分支, 因此你可以在日常工作中“混合和搭配”不同的开发线。