как сделать слияние веток GIT несколькими людьми - PullRequest
1 голос
/ 21 октября 2019

Мы используем stash (то есть битовую корзину)

У нас есть несколько разработчиков в НАШЕЙ команде, которые специализируются на разных модулях в одном и том же коде репозитория GIT. И модули находятся в разных каталогах. Также есть ДРУГИЕ команды, которые работают с одним и тем же источником (в ветке 'development'), и они могут вносить изменения в любой из модулей.

например,

src

| --модуль A -

| --модуль B -

Наша команда работает в ветке команды, которая отделена от ветки 'Develop'.

Теперь мыхочу объединить ветку 'team' в ветку 'development', и в разных модулях есть конфликты слияния. Специализированный разработчик для каждого модуля должен исправить конфликт слияния. Другой разработчик должен просмотреть изменения с помощью запроса извлечения stash (Bit bucket)

Каков наилучший способ добиться этого? Чтобы уточнить далее, я хочу знать, как выполнить объединение совместно ? [Я знаю, как выполнить GIT-слияние с помощью инструментов слияния]

Использовать один и тот же логин всеми разработчиками и исправить конфликты слияния?

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

и конфликты слияния в разных модулях.

При объединении команды для разработки не должно быть конфликтов слияния.
Каждая команда должна разрабатывать в своей отдельной ветке, посвященной модулям, и сначала перебазировать упомянутую специализированную ветку поверх разработки: как только конфликтыразрешается командой модуля локально: затем (ветвление) может произойти (слияние) между этой веткой модуля и разработкой.
Другие команды могут затем перебазировать свою собственную ветку модуля, убедившись, что каждый член команды сбрасывает свой собственный модульветка, чтобы учесть новую историю, и дальше оттуда.

0 голосов
/ 21 октября 2019

Узнайте, как решить эту проблему здесь https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

ИЛИ

Попробуйте: git mergetool

Это открывает графический интерфейс, который шаг за шагом проходит через каждый конфликт, и вы получаетевыбрать, как слить. Иногда это требует небольшого ручного редактирования впоследствии, но обычно этого достаточно само по себе. Конечно, это намного лучше, чем делать все вручную.

Команда не обязательно открывает графический интерфейс, если вы его не установите. Запуск git mergetool для меня привел к использованию vimdiff. Вместо этого вы можете установить один из следующих инструментов: meld, opendiff, kdiff3, tkdiff, xxdiff, tortoisemerge, gvimdiff, diffuse, ecmerge, p4merge, araxis, vimdiff, emerge.

Ниже приведен пример процедуры использования vimdiff для разрешения конфликтов слияния. На основании этой ссылки

Шаг 1 : Выполните следующие команды на вашем терминале

git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false

Это установит vimdiff в качестве инструмента слияния по умолчанию.

Шаг 2 : Выполнить следующую команду в терминале

git mergetool

Шаг 3 : Вы увидите дисплей vimdiff в следующем формате

  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝

Эти 4 вида:

LOCAL - это файл из текущей ветви

BASE - общий предок, как файл выглядел до того, как оба изменения

REMOTE - файл, который вы объединяете с вашей веткой

MERGED - результат слияния, это то, что сохраняется в репо

Вы можете перемещаться между этими представлениями, используя ctrl + ш . Вы можете напрямую перейти к представлению MERGED, используя ctrl + w , а затем j .

Подробнее о навигации vimdiff здесь и здесь

Шаг 4 . Вы можете редактировать MERGED-представление следующим образом

Если вы хотите получить изменения из REMOTE

:diffg RE  

Если вы хотите получить изменения из BASE

:diffg BA  

ЕслиВы хотите получить изменения от LOCAL

:diffg LO 

Шаг 5 . Сохранить, выйти, зафиксировать и очистить

:wqa сохранить и выйти из vi

git commit -m "message"

git clean Удалить созданные дополнительные файлы (например, * .orig)с помощью инструмента сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...