2014-11-14 5 views
1

У нас есть две ветки: master (стабильная/живая) и stage (тестирование). При развертывании stage объединяется в master, а master будет развернут.Как принудительно объединить ветвь git в другую?

Вернувшись вовремя, кто-то (и это, безусловно, не является синонимом для меня самого) сделал несколько коммитов (исправлений) только на master.

Теперь при слиянии stage в master файлы, затронутые этими исправлениями, больше не будут объединены, они просто проигнорируют изменения в ветке stage.

Это похоже на то, как работает git - что из-за меня отчуждает. Я считал cherrypick мастером совершает или rebase ing, но из-за недостатка знаний не знаю, удастся ли хоть что-либо из этого добиться - или как это сделать должным образом.

Каков наилучший способ объединить эти файлы с синхронизацией, чтобы сохранились изменения с обеих ветвей?

ОБНОВЛЕНИЕ
Слияние произошло, как ожидалось; Я просто слишком смутился о возникающем различии, пока не понял, что это только одностороннее слияние.

+0

Я не вижу, как создать эти исправления для мастера может быть проблемой. Объединение 'stage' в' master' в следующем выпуске должно работать нормально - исправления сохраняются, и новые коммиты применяются поверх них. – dcastro

+1

Однако вы должны * слить 'master' на' stage', чтобы вернуть эти исправления на тестовую площадку. – dcastro

+0

Так бы и подумал, но новые коммиты не применяются к этим файлам при слиянии ... Объединение 'master' обратно в' stage' кажется очевидным и хорошим советом, и я дам ему попробовать! – pong

ответ

2

Я не вижу, как создавать эти исправления на master может быть проблемой. Слияние stage на master на следующем выпуске должно работать нормально - исправления сохраняются, а новые коммиты применяются поверх них.

Что вы должны делать, однако, объединить master к stage довести эти исправления обратно тест-земли. Ваши две ветви будут синхронизированы, и все должно быть в порядке.

0

Я рекомендую перебазирования:

git rebase --onto master <hash of the commit before making changes on stage> stage 

Вы можете получить хэш с git log. Перед тем, как приступить к внесению изменений, потребуется последняя фиксация на ветке stage.

Если вы изменили тот же файл на обоих ветках, git попросит вас разрешить конфликты. Вы можете сделать это, используя git mergetool или вручную, затем перейдите к git rebase --continue.

Это добавит исправления в ветку stage, после чего вы сможете объединить ее с master.

Смежные вопросы