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


78

为什么在我的代码与其他人的代码合并时会给出三个选择?难道不应该只有我的代码,其他人的代码以及下面的输出吗?KDIFF的文档无法帮助我理解。

Answers:


35

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


2
基本修订是关于什么的?在某些情况下有帮助吗?
走私的煎饼

6
@ user464095:对于KDiff,我认为这是B和C都在修改的修订版本。因此,您可以将B与其基数(A),C与其基数(也称为A)进行比较,并将B和C的变化彼此进行比较。这样,您可以通过使用B或C中的更改或恢复为原始(A)来解决冲突。
eldarerathis

2
我还是不明白,您能详细说明一下吗?
走私煎饼

12
好吧,考虑一下您和另一个开发人员对同一代码进行冲突更改的情况。拥有原始文件的上下文通常非常有帮助,因此您可以知道其中任何一个是否破坏了先前的功能。您可以将文件与其他开发人员的文件进行比较,解决冲突,然后与原始文件进行比较,但是三向比较可在更少的步骤中执行相同的功能。
eldarerathis

如@gbarry在相关SO线程中所述,BASE版本是您最近一次从存储库下载的版本,至少使用Subversion。他还讨论了编辑冲突以及这如何影响BASE和HEAD版本。
hotshot309 2012年

75

A指的是您的合并目标所基于的版本。如果从分支合并到中继,则“ A”将是先前的中继版本。

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

C是您想要合并到B之上的版本。


B是指在存放之前还是在存放之后?
感觉很好,编程很好

3
合并期间不会应用隐藏的更改。它们会一直藏在隐蔽处,直到它们显露出来。
2015年

11

(BASE)->当前位于远程存储库中的原始文件。
B(本地)->您的文件。这仅显示与A.C
(REMOTE)‐>其文件相比的更改。这仅显示了与A相比的更改。

如果更改在不同的代码行上,则使用B和C。如果更改在同一代码行上(发生冲突),则从B或C进行。


11

A是您的父修订版,其中B和C作为孩子
这意味着B包含user1 / repo1在A上所做的更改,而C也包含其他用户(user2 / repo2)在A上所做的更改

kdiff使您可以选择从b或c中选择修改(或同时选择两者)或从父级也选择“ A”


3

如果我这样做了git rebase,那么我的观察结果是:C-是my_branch本地的内容(即,在重新设置基准并发生冲突之前在编辑器中看到的内容)。B-分支是我在my_branch的基础之上(例如,以master分支为基础)A-B&C的基本修订版(在这种情况下,对我来说并没有太大关系)


是的,B&C似乎在合并和
重组
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.