【发布时间】:2011-06-25 03:46:06
【问题描述】:
谁能用简单的英语解释这两种方法之间的区别?一个指向清晰编写的教程的链接也足够了。
谢谢。
【问题讨论】:
标签: version-control merge branch
谁能用简单的英语解释这两种方法之间的区别?一个指向清晰编写的教程的链接也足够了。
谢谢。
【问题讨论】:
标签: version-control merge branch
它们不是不同的方法,而是同一枚硬币的不同面。
如果你使用分支开发,你最终需要将它们合并在一起。
回答问题:
分支是源代码选定部分的副本,用于特定工作(功能、项目等)。
合并是将两个分支同步并(通常)在进程中删除一个分支的行为。
来自维基百科,Revision control:
分支
受版本控制的一组文件可能会在某个时间点进行分支或分叉,以便从那时起,这些文件的两个副本可能以不同的速度或以不同的方式相互独立地开发。
合并
合并或集成是将两组更改应用于一个文件或一组文件的操作。一些示例场景如下:
- 处理一组文件的用户更新或同步其工作副本与所做的更改,并由其他用户签入存储库。
- 用户尝试签入自文件签出后已由其他人更新的文件,修订控制软件会自动合并文件(通常在提示用户是否应继续自动合并后,以及在某些情况下,只有在可以清楚合理地解决合并问题时才这样做)。
- 分支了一组文件,分支前存在的问题在一个分支中修复,然后将修复合并到另一个分支中。
- 创建一个分支,独立编辑文件中的代码,更新后的分支随后合并到一个统一的主干中。
【讨论】:
分支是根据您分支所在项目的状态开始新的开发线。
合并是报告从一条开发线或在另一条开发线之间的更改。
很明显,您在不同的时间点都需要两者。
链接:
【讨论】:
我认为您不能“反对”合并与分支。
正如我在“When should you branch?”中解释的那样,当您想要隔离开发工作时,您可以进行分支。
一旦你有一个分支,你(和其他开发人员)可以在其中进化到(重构?增强?错误修复?...),要问的关键问题是:
“你应该如何处理那个分支的内容?”
换句话说,你是不理会它,还是将它的所有进化重新整合到另一个分支中。这就是合并。
但仅仅合并是不够的。什么赋予了合并它的目的is its workflow:你从哪里合并你的代码?
定义您的工作流程,您将真正利用 SCM 的优势。
【讨论】:
用简单的英语来说,分支就像“树的分支”,树是您的软件产品,分支是它的一个特殊部分,它从中心列“延伸”出来,但有自己的特点。
在现实生活中,如果您必须支持两个愿望稍有不同的客户,那么您就需要为您的软件创建一个分支。然后,您就有了核心产品 (A) 和客户特定产品(B 和 C),它们基本上是核心产品,只是稍加改动。
合并是采用此客户特定的分支(B 或 C),并将其与您的核心产品 (A) 重新集成。如果您实现了一个不错的功能是分支 B,这很方便,您希望每个人都拥有它,因此您将其合并到核心产品 A 中。
【讨论】: