Что такое A, B и C в слиянии KDIFF

Почему мне дают три варианта при слиянии между моим кодом и чьим-то другим? Разве не должен быть только мой код, код другого человека и вывод ниже? Документация для KDIFF не помогает мне понять.

5 ответов


звучит так, как будто вы делаете трехходовое слияние, поэтому A должен быть базовой редакцией, на которой основаны B и C, B-их, а C-ваш (я считаю; B и C могут быть противоположными).


на относится к версии, на которой основана цель слияния. Если вы объедините ветку с магистралью, " A " будет предыдущей версией магистрали.

B - это то, что у вас есть в локальной папке магистрали, включая локальные изменения.

C Это версия, которую вы хотите объединить поверх B.


A-это ваша родительская редакция, имеющая B и C в качестве дочерних.
Это означает, что B содержит изменения, сделанные на A by user1 / repo1 и C также содержит изменения на A, но другим пользователем (user2 / repo2)

kdiff дает вам возможность либо выбрать модификацию из b или c (или взять оба), либо из родительского также "A"


a (BASE) ‐‐> исходный файл, который в настоящее время находится в удаленном РЕПО.
B (локальный)‐ & dash;> ваш файл. Это показывает только изменения по сравнению с А.
C (REMOTE)‐ & dash;> их файл. Это показывает только их изменения по сравнению с А.

Если изменения находятся в разных строках кода, Вы берете как из B, так и из C. Если изменения находятся в тех же строках кода (конфликт), вы берете либо из B, либо из C.


Если бы я сделал git rebase, мое наблюдение состояло в том, что: C - это то, что в my_branch локально ( т. е. был замечен в мой редактор, прежде чем перебазироваться начал и возникали конфликты). B-филиал я перебазировал my_branch поверх (скажем, master branch, например) A-базовая ревизия B & C (что не имело для меня большого значения в этом случае)