KDIFF合并中的A,B和C是什么

smu*_*kes 74 version-control merge kdiff3

为什么在我的代码和其他人之间合并时,我有三个选择?不应该只有我的代码,其他人的代码和下面的输出?KDIFF的文档无法帮助我理解.

Th *_*Ä s 71

A指的是您的合并目标所基于的版本.如果从分支合并到主干,则"A"将是上一个主干版本.

B是您当前在本地trunk文件夹中的内容,包括本地更改.

C是你要在B之上合并的版本.

  • 合并期间不会应用隐藏更改.他们一直呆在那里,直到他们明确地安息. (2认同)

eld*_*his 35

听起来你正在做三向合并,所以A应该是B和C所基于的基础版本,B是他们的,C是你的(我相信; B和C可能是相反的).

  • 好吧,考虑一下您和其他开发人员对同一代码进行相互冲突的更改的情况.拥有原始文件的上下文通常很有帮助,因此您知道是否有人破坏了以前的功能.您可以将文件与其他开发人员进行差异,解决冲突,然后使用原始文件进行差异,但三向差异可以用更少的步骤执行相同的功能. (12认同)
  • @ user464095:对于KDiff,我认为这是B和C都在修改的修订版.因此,您可以将B与其基数(A),C与其基数(也是A)以及B和C彼此的变化进行比较.这样,您可以通过使用B或C中的更改或还原为原始(A)来解决冲突. (6认同)
  • 什么是基本修订版?在某些情况下,这有帮助吗? (2认同)
  • 我还是不明白,你能详细说明一下吗? (2认同)

Rol*_*sta 11

A是您的父级版本,其中B和C为子级.
这意味着B包含由user1/repo1在A上完成的更改,C还包含A上的更改但由其他用户(user2/repo2)

kdiff为您提供选择从b或c(或两者兼而有之)或父母也选择"A"的选项


Nik*_*tak 10

A(BASE) - >当前位于远程仓库中的原始文件.
B(LOCAL) - >你的档案.与A.
C(REMOTE) - >他们的文件相比,这仅显示您的更改.这只显示了与A相比的变化.

如果更改位于不同的代码行上,则从B和C中获取.如果更改位于相同的代码行(冲突),则从B或C中获取.