Объедините ветку функции локально, чтобы продолжить работу, пока она находится на рассмотрении кода на удаленном - PullRequest
0 голосов
/ 24 мая 2018

Допустим, я на master;Я делаю функциональную ветку, полученную из нее, и открываю PR для проверки кода.В ожидании одобрения я хочу объединить ветвь функций на своем локальном master и продолжить работу над другими вещами, для которых требуется эта функция.Изменения действительно просты и не будут затронуты в работе, которую я планирую делать локально.

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Это действительно зависит от «потока».Некоторые инструменты обзора имеют плохую поддержку rebase (github, для одного), некоторые действительно хороши с ним (gerrit, bitbucket).Зачем?Потому что rebase меняет историю.Давайте предположим,

master
      -feature              -review changes
              -dependent feature

При перебазировании вы перемещаете ссылку (родительский коммит) -зависимого объекта из -feature в -review, что приводит к изменению истории.Это сильно отличается от слияния.Есть хорошая статья об отличиях здесь , но я рекомендую прочитать книгу .

Теперь я бы открыл ветку из -feature (как описано вдиаграмму), но произойдет перебазирование на главном сервере перед открытием запроса PR (меньше шансов конфликта при утверждении) для -зависимой функции с объединением -feature с главным.

Будьте осторожны при использовании rebase, так как изменение истории может привести к кошмару .Если вы измените коммит, который кто-то другой вытащил и сработал поверх него, он / она сильно вас возненавидит.Не перебазируйте коммиты, которые объединены в общих ветках (master / development).

Надеюсь, это поможет.

0 голосов
/ 25 мая 2018

Вам просто нужно выполнить приведенную ниже команду, чтобы получить объединенный коммит от github и сохранить локальные коммиты в локальной ветке master.

#on local master branch
git pull origin master --rebase

Предположим, после того как вы слили ветку объектов в локальную masterветвь (как коммит M) и фиксация изменений в master ветвь (как коммит G и H), история фиксации, как показано ниже:

...---A---B---C---M---G---H  master 
       \         /
        D---E---F    feature

После завершения PR, естьтакже будет иметь объединенный коммит (предположим, что это M') в ветке github / remote master.

Для того, чтобы вытащить коммит M' из удаленного репо в ваше локальное репо, сохраняя при этом ваши локальные изменения (фиксирует G и H) на ветке master, вы можете использовать команду git pull origin master --rebase на ветке master.Тогда история коммитов в вашем локальном репо будет:

...---A---B---C---M'---G'---H'  master 
       \         /
        D---E---F    feature
0 голосов
/ 24 мая 2018

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

...