Чому я отримую три варіанти злиття між своїм кодом та чужим? Чи не повинен бути просто мій код, код іншої людини та вихідні дані нижче? Документація до KDIFF не допомагає мені зрозуміти.
Чому я отримую три варіанти злиття між своїм кодом та чужим? Чи не повинен бути просто мій код, код іншої людини та вихідні дані нижче? Документація до KDIFF не допомагає мені зрозуміти.
Відповіді:
Здається, ви робите тристороннє злиття , тому A має бути базовою версією, на якій базуються B і C, B є їхньою, а C - вашою (я вважаю; B і C можуть бути навпаки).
Посилання стосується версії, на якій базується ваша мета злиття. Якщо Ви об'єднаєте з гілки в магістраль, попередньою версією магістралі буде 'A'.
B - це те, що ви наразі маєте у своїй локальній папці магістралі, включаючи локальні зміни.
C - версія, яку ви хочете об'єднати поверх B.
A - це ваша батьківська редакція, в якій B і C є дочірніми .
Це означає, що B містить зміни, внесені в A користувачем1 / repo1, а C також містить зміни в A, але іншими користувачами ( user2 / repo2 )
kdiff дає вам можливість вибрати модифікацію з b або c (або взяти обидві) або з батьківської також "A"
(BASE) ‐‐> Оригінальний файл, який наразі знаходиться у віддаленому репо.
B (LOCAL) ‐‐> Ваш файл. Тут відображаються лише ваші зміни порівняно з A.
C (REMOTE) ‐‐> Їх файлом. Це показує лише їх зміни порівняно з А.
Якщо зміни входять до різних рядків коду, ви берете як з B, так і з C. Якщо зміни знаходяться в одних і тих самих кодових рядках (конфлікт), ви берете або з B, або C.
Якби я це зробив git rebase
, моє зауваження було таким: C - це те, що в my_branch локально (тобто було помічено в моєму редакторі до початку перебазування та виникнення конфліктів). B - гілка, яку я перебазував my_branch поверх (скажімо, головна гілка, наприклад) A - базова ревізія B & C (що для мене в цьому випадку не мало великого значення)