What are A, B, and C in KDIFF merge

Why am I given three choices when merging between my code and someone else's? Shouldn't there just be my code, the other person's code, and the output below? The documentation for KDIFF doesn't help me understand.

32268 次浏览

Sounds like you're doing a three-way merge, so A should be the base revision that B and C are based on, B is theirs and C is yours (I believe; B and C might be the opposite, though).

A refers to the version your merge target is based on. If you Merge from branch to trunk, 'A' will be the previous trunk version.

B is what you currently have in your local trunk folder, including local changes.

C is the Version you wanna merge on top of B.

A is your parent revision having B and C as child.
Which means B contains the changes done on A by user1/repo1 and C also contains the changes on A but by other user (user2/repo2)

kdiff gives you the option either to select modification from b or c (or take both) or from parent also 'A'

A (BASE) ‐‐> Original file that currently sits in remote repo.
B (LOCAL) ‐‐> Your file. This shows only your changes as compared to A.
C (REMOTE) ‐‐> Their file. This shows only their changes as compared to A.

If the changes are on different code lines, you take from both B and C. If the changes are on same code lines (conflict), you take either from B or C.

If I did git rebase, my observation was that: C - is what in my_branch locally ( i.e. was seen in my editor before the rebase started and conflicts occurred). B - branch I was rebasing my_branch on top of (say master branch for example) A - base revision of B & C (which didn't matter to me too much in this case)