Сведения о вопросе

Gentleman

13:13, 5th August, 2020

Теги

Слияние 2 ветвей Git?

Просмотров: 238   Ответов: 3

Привет всем!

Дано:

1. Репозиторий Git.

2. Проект в котором есть 2 ветви:
v2 — в ней произведены и закомитеный изменения в 3 файлах. Предположим что в первом это строка 10, во втором 5, в третьем 6.

master — произведены изменения в этих же 3 файлах в тех-же строках, но при этом они тоже нужны.
3. Конфликт при слиянии между master и v2.
Задача:

1. Каким образом разрешить конфликт?

2. Есть ли способ взять изменения из v2 только из интересуемых строк и файлов и применить их к master



  Сведения об ответе

piter

20:53, 20th August, 2020

Правильно в вашем случае будет

1) git rebase master

из вспомогательной ветки. Вероятно, шаг включает разрешение возможных конфликтов.

2) git rebase -i HEAD^^^

из вспомогательной ветки. Собираем несколько коммитов вспомогательной ветки в один (опционально, но часто для аккуратного оформления коммитов требуется)

3) git merge secondary-branch --ff-only

из главной ветки. Мержим с fast-forward (то есть уже без решения конфликтов) новые коммиты из вспомогательной ветки

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

Иногда имеет смысл сделать git rebase -i вспомогательной ветки на саму себя, чтобы объединить ряд коммитов в один.

Если коротко. Хорошей практикой считается отсутствие коммитов слияния в главной ветке.


  Сведения об ответе

appple

05:24, 1st August, 2020

Увы, но если git не смог сам разрешить конфликт, то однозначно сделать это автоматически нельзя.

Взять только нужные изменения можно, если просто скопировать дерево v2 поверх дерева master, а потом записать только нужные изменения при помощи git add --interactive. Все же ненужное затем убирается через git checkout ., который сбросит состояние рабочего каталога в индекс (все, что добавилось через git add, останется).


  Сведения об ответе

repe

21:16, 9th August, 2020

все можно сделать через diff
запускаете, сравниваете, выбираете что взять и откуда.
даже есть графическая оболочка входящая в TourtoisGIT


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться