源代码管理中的分支与合并

时间:2011-02-10 20:56:03

标签: version-control merge branch

有人能用简单的英语解释这两种方法的区别吗?一个好的清晰书面教程的链接也足够了。

谢谢。

4 个答案:

答案 0 :(得分:2)

它们不是不同的方法,而是同一枚硬币的不同方面。

如果使用分支开发,则需要最终将它们合并在一起。


回答这个问题:

分支是源代码的选定部分的副本,用于特定工作(功能,项目无论如何)。

merge 是使两个分支同步并且(通常)在该过程中摆脱一个分支的行为。


来自维基百科,Revision control

  

分支

     

版本控制下的一组文件可以在某个时间点进行分支或分叉,以便从那时起,这些文件的两个副本可以以不同的速度或以不同的方式彼此独立地发展。


  

合并

     

合并或集成是对文件或文件集应用两组更改的操作。一些示例场景如下:

     
      
  • 用户,处理一组文件,更新或同步其工作副本以及所做的更改,并由其他用户检入存储库。
  •   
  • 用户尝试签入自签出文件以来已被其他人更新的签入文件,并且修订控制软件自动合并文件(通常,在提示用户是否应继续自动合并之后,以及在某些情况下,如果能够明确合理地解决合并,只会这样做。)
  •   
  • 一组文件是分支的,在一个分支中修复分支之前存在的问题,然后修复程序合并到另一个分支中。
  •   
  • 创建分支,文件中的代码是独立编辑的,更新的分支稍后会合并到一个统一的主干中。
  •   

答案 1 :(得分:1)

分支是根据您分支的项目的状态开始一个新的开发线。

合并是报告从一条开发线或开发线之间的变化。

很明显,你需要在不同的时间点。

链接:

答案 2 :(得分:1)

我认为你不能“反对”合并与分支。

如果我想在“When should you branch?”中解释,您希望隔离开发工作时进行分支。

要问的关键问题是,一旦你有一个分支,你(和其他开发人员)可以进化(重构?增强?bugfix?...),是:

“您应该如何处理该分支的内容?”

换句话说,你是不管它,还是将它的所有演变重新整合到另一个分支中。那就是合并 但仅靠合并是不够的。是什么让合并它的目的is its workflow:你在哪里合并你的代码?

定义您的工作流程,您将真正利用SCM的优势。

答案 3 :(得分:0)

简单来说,分支就像“树的分支”,树是你的软件产品,分支是它的一个特殊部分,它从中心列“延伸”但具有自己的特征。

在现实生活中,如果你必须支持两个略有不同的客户,你就会成为软件的一个分支。然后,您拥有核心产品(A)和客户特定产品(B和C),这些产品基本上是核心产品,只有很小的变化。

合并将采用此客户特定分支(B或C),并将其与您的核心产品(A)重新集成。如果你实现了一个很好的功能就是分支B,这是很方便的,你希望每个人都拥有它,所以你将它合并到核心产品A中。