#git
#git
Вопрос:
Я работаю над веткой функций, которая отсекается от main branch - 1
, и предполагаю объединить в main branch - 2
. (Это немного неудобный поток git, который мы используем в проекте)
Теперь, при повышении PR до branch - 2
, я вижу конфликты слияния в двух файлах. Я не хочу использовать branch - 2
свой код из-за другой текущей работы других членов команды. Следовательно, мне нужен способ разрешить эти конфликты слияния без слияния обратно branch - 2
в моей ветке функций.
Было бы здорово, если бы кто-нибудь знал, как это можно сделать в IntellijIDEA, иначе было бы достаточно команд.
Комментарии:
1. Отложите текущую работу, исправьте конфликт, объедините его, откройте свой тайник
2. Если вы не хотите объединять ветку-2 в свою функцию, почему вы повышаете PR до ветки-2?
3. У меня есть другое решение, например, выбор вишни и т. Д., Но интересно, Есть ли какой-нибудь трюк.
4. @zdhim Ветка-2 большая, и вы пытаетесь получить определенную часть ветки-2, например, исправление ошибок или рефакторинг?
Ответ №1:
Теперь, при повышении PR до ветки — 2…
Если вы повышаете PR до ветки-2, предположительно, вы хотели бы объединиться с веткой-2. Но вы не хотите объединяться с веткой-2.
Следовательно, мне нужен способ разрешить эти конфликты слияния без слияния с обратной веткой — 2 в моей ветке функций.
Вы могли бы, но такое частичное слияние, скорее всего, будет нарушенным кодом.
Например, предположим, что вы оба реорганизовали функцию, чтобы она работала немного по-другому. Это приводит к конфликту. Как вы осмысленно разрешаете этот конфликт, не объединяя остальные изменения из ветки-2?
Если вы разрешаете это, принимая изменения в ветке-2, вам также необходимо принять изменения в ветке-2, в которой вызывается функция. Если вы разрешите это, приняв свои собственные изменения, вам придется разрешать конфликты с вызовами функций where branch-2 changed позже.
Я собираюсь предположить, что branch-2 — это большая функциональная ветвь с множеством независимых исправлений, и вам нужны только исправления. В этом случае создайте новую ветку от branch-1, выберите только исправления и объедините их. Теперь каждый может получить доступ к исправлениям, не перетаскивая остальную часть ветки-2.
Перебазируйте (или объедините) вашу функциональную ветвь в ветку-1, чтобы получить исправления.
Также перебазируйте (или объедините) ветку-2 в ветку-1. Это упрощает ветку-2.
Чтобы извлечь его. Ваш репозиторий выглядит следующим образом.
A - B - C [branch-1]
|
| D - E - F [branch-2]
G - H - I [feature]
Вы хотите только зафиксировать E. Создайте новую ветку от branch-1.
$ git checkout -b fix branch-1
[fix]
A - B - C [branch-1]
|
| D - E - F [branch-2]
G - H - I [feature]
Вишневый выбор E.
$ git cherry-pick E
E1 [fix]
/
A - B - C [branch-1]
|
| D - E - F [branch-2]
G - H - I [feature]
Объедините его в ветку-1, как и любой другой PR.
E1
/
A - B - C --- M [branch-1]
|
| D - E - F [branch-2]
G - H - I [feature]
Перебазируйте обе ветви поверх новой ветви-1.
$ git checkout branch-2
$ git rebase branch-1
$ git checkout feature
$ git rebase branch-1
E1
/
A - B - C --- M [branch-1]
|
| D - F [branch-2]
G - H - I [feature]
Обратите внимание, как E исчезает в ветке-2, потому что она избыточна с E1.