Необъяснимый конфликт слияния при слиянии от выпуска к основному [Git поток] - PullRequest
1 голос
/ 27 апреля 2020

Я слежу за git потоком для управления выпуском.

Мы используем ветку разработки для разработки и интеграции. Как только мы собираемся выпустить релиз, мы отключаем ветку релиза от разработки. Мы продолжаем исправлять проблему, чтобы выпускать ее на случай, если возникнет какая-либо проблема и объединит ее для разработки.

После того, как мы закончим. Мы объединяем релиз с мастером всегда. Мы никогда не модифицируем мастер напрямую. Таким образом, Мастер должен получить только последний релиз.

Но все же я всегда вижу конфликт слияния при повышении PR от релиза к Мастеру, что довольно удивительно. Я знаю, как решить этот конфликт слияния. Но вопрос «Почему слияние из релиза в мастер-шоу вообще конфликтует?». Мы просто дважды проверили историю мастера, чтобы убедиться, что никто не изменил мастер.

Есть ли какие-либо настройки или что-либо, что нужно отметить для того же самого в настройках репозитория?

1 Ответ

0 голосов
/ 27 апреля 2020

Из комментариев:

Я вырезал мастер из выпуска

git checkout release/10.0
git checkout -b master
git push

Давайте разберем эти команды по одной:

 git checkout release/10.0

Это проверяет ветвь с именем release/10.0 , если эта ветвь существует . Если ветвь еще не существует, git выдаст ошибку:

error: pathspe c 'release / 10.0' не соответствует ни одному из файлов, известных git.

git checkout -b master

Попытка создать новую ветвь с именем master. Если ветвь master уже существует, вы должны получить еще одну ошибку:

fatal: ветвь с именем 'master' уже существует.

git push

Это приводит к текущая ветка. Если вы получили вышеуказанную ошибку при попытке создать основную ветвь, то вы получите pu sh release/10.0.

С учетом всего сказанного эта серия команд кажется странной, потому что если вы используете Git Flow , у вас уже должна быть ветка master. Вы должны не создавать новый master каждый раз, когда вы делаете релиз. Вместо этого создайте новую ветку релиза из master:

git checkout -b release/10.0 master

Затем, когда релиз будет готов к развертыванию, вы должны объединить ветку релиза с master:

git checkout master
git merge release/10.0
git push

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

Однако, так как вы видите конфликты слияния, были введены другие коммиты на master, которых нет в ветке релиза.

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