Я и моя команда разрабатываем функцию, используя удаленную ветку (origin/our_feature_branch
) вне основного пути (origin/dev
). Геррит используется для обзора и т. д.
Поднятие удаленной ветки выполняется с помощью git merge origin/dev
, за которым следует исправление конфликтов, фиксация и git push origin HEAD:refs/for/our_feature_branch
.
Геррит применяет правило, согласно которому за один раз может быть отправлена только одна фиксация. Я ничего не могу с этим поделать.
Скажем, я начинаю работать над поднятием вверх:
git fetch
git checkout -b uplift origin/our_feature_branch
git merge origin/dev
Но здесь я застреваю, исправляя некоторые конфликты, и регрессионные тесты занимают некоторое время, и какой-то член команды отправляет еще один коммит в ветку функций в Gerrit. Этот коммит теперь находится поверх базового коммита для моего «текущего» повышения.
Что мне теперь делать?
Если я перебазирую свою фиксацию слияния в ветке функций, я удаляю слияние и добавляю все коммиты, объединенные из origin/dev
, поверх него - не вариант. Если я сливаюсь с веткой функций, я получаю слияние на слиянии, и в конечном итоге мне придется отправить два коммита в Gerrit — это тоже не разрешено.
Есть ли решение этой проблемы или мне нужно заново выполнить слияние и постараться не забыть сообщить всем, что у нас есть остановка доставки в следующий раз, когда я начну работать над поднятием?
git rebase -p
? - person user4815162342   schedule 13.11.2015-p
выглядит многообещающе. Я попробую, когда вернусь в офис в понедельник, спасибо! - person Martin G   schedule 14.11.2015git --rebase-merges
в конечном итоге заменит старыйgit --preserve-merges
. См. Что именно делает Git «rebase --preserve-merges
» (и почему?) - person VonC   schedule 27.05.2018