Merge 合并分支实际上是如何工作的(在引擎盖下)?

Merge 合并分支实际上是如何工作的(在引擎盖下)?,merge,versioning,theory,Merge,Versioning,Theory,这可能是一个幼稚的问题,但是,正如在对象中所问的,版本控制软件在不生成中断代码的情况下将分支合并回主干的实际方式是什么 这里有一个简单的例子:我为程序“Hello World Power edition”在主干上做了一个分支。我支持克林贡语。这是一个根本性的改变,它改变了函数printHelloWorld()的工作方式 同时,由于bug#749导致“Hello World”被写为“Hello World”,主干中的函数printHelloWorld()已经更改 现在,我在这里看到的问题是:当我通

这可能是一个幼稚的问题,但是,正如在对象中所问的,版本控制软件在不生成中断代码的情况下将分支合并回主干的实际方式是什么

这里有一个简单的例子:我为程序“Hello World Power edition”在主干上做了一个分支。我支持克林贡语。这是一个根本性的改变,它改变了函数printHelloWorld()的工作方式

同时,由于bug#749导致“Hello World”被写为“Hello World”,主干中的函数printHelloWorld()已经更改

现在,我在这里看到的问题是:当我通过分支合并回主干时,我在sayHello.py文件中的函数printHelloWorld()中实验了冲突

VCS程序如何知道如何从my branch添加Klingon支持并将错误修复保持在主干中?有哪些人为或软件驱动的策略可以避免这种情况


提前感谢。

在这种情况下,版本控制系统无法自动合并,您必须手动进行合并。良好的单元测试将帮助您确保不会丢失任何功能。

在您可以将分支合并回主干之前,版本控制系统将使用您分支后主干中的更改更新您的工作副本。如果没有此更新,它将不允许您进行合并。这确保您在下一次提交时得到主干中的所有错误修复

处理分支的一个好策略是定期将主干中的更改移植到分支中。这确保了您不会偏离主干线太远,最终合并回主干线时会出现问题

VCS程序如何知道如何添加 我的分支机构和 将错误修复程序保存在主干中

VCS对源代码的语义一无所知—它将其视为一堆文本/二进制文件。VCS系统使用/算法检测您的文件和当前文件版本之间的冲突。解决这些冲突是您的责任,因为只有您知道这些更改的语义。一些VCS(如SVN)会要求您使用trunk中的最新更改更新工作副本,然后再允许您提交更改,以确保不会丢失任何内容

为了确保您没有破坏任何东西,并且之前所有的bug修复都没有破坏,您应该使用,以及其他实践。是保持软件健康的好方法。

哦,好的,但是如何?。“更新我的工作副本”可能会导致同样的问题。。反方向!或者,推动printHelloWorld()会将修复添加到分支中,而牺牲对克林贡语言的支持!