Что такое A, B и C в KDIFF слияния - PullRequest
70 голосов
/ 26 октября 2010

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

Ответы [ 5 ]

69 голосов
/ 09 августа 2011

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

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

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

32 голосов
/ 26 октября 2010

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

11 голосов
/ 31 октября 2011

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

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

10 голосов
/ 05 октября 2017

A (BASE) & dash; & dash;> Исходный файл, который в данный момент находится в удаленном репо.
B (LOCAL) & dash; & dash;> Ваш файл. Это показывает только ваши изменения по сравнению с A.
C (REMOTE) & dash; & dash;> Их файл. Это показывает только их изменения по сравнению с A.

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

3 голосов
/ 06 апреля 2018

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

...