Как объединить предыдущие коммиты

Я установил Gitlab и пытаюсь следовать указанному здесь рабочему процессу: Производственная ветвь Gitlab.

Теперь мой репозиторий выглядит так:

введите описание изображения здесь

И меня попросили объединить только commit A ветки master с веткой production. Как лучше всего это сделать?

Следует ли мне использовать команду git cherry-pick? Я читал, что потеряю историю версий с cherry-pick.

Если возникла такая ситуация, когда мне нужно продолжить слияние одного из предыдущих коммитов из ветки master в ветку production, как мне с этим справиться?

Я застрял в этом. Любая помощь приветствуется.

Спасибо,

Обновление: из основной ветки я могу нажимать только определенные коммиты: git push <remotename> <commit SHA>:<remotebranchname>

Нашел здесь ответ: Как я могу отправить конкретную фиксацию на удаленный компьютер, а не предыдущие?


person Raghavendra N    schedule 26.10.2016    source источник
comment
есть ли что-нибудь между A и X?   -  person max630    schedule 29.10.2016
comment
Ничего такого. x - это последний коммит, слитый с производственной веткой и развернутый на производственном сервере. На самом деле в моем репозитории коммит A представляет собой небольшую особенность. Он был завершен, но не запущен в производство, и я продолжил работу над другими функциями. Теперь я хочу только продвинуть функцию A в производство.   -  person Raghavendra N    schedule 30.10.2016
comment
тогда вы можете просто объединить коммит A. Собственно, данный ответ подсказывает именно это.   -  person max630    schedule 30.10.2016
comment
cherry-pick? Я хотел этого избежать. Нашел другой подход: git checkout -b branch_x commit_hash. А затем я могу объединить branch_x с продуктом и удалить branch_x. Правильно ли я делаю?   -  person Raghavendra N    schedule 30.10.2016
comment
Возможный дубликат слияния до определенного коммита   -  person Basix    schedule 06.02.2018


Ответы (1)


Выбор вишни жизнеспособен, если вы специально хотите, чтобы изменения были внесены в выбранные коммиты. Наиболее выгодно, когда коммиты, которые вам нужно применить, происходят не в последовательном порядке. Лично я бы не рекомендовал вам делать это в основной / производственной ветвях, поскольку это не очень хорошая долгосрочная стратегия выпуска.

Мой совет основан на git flow, который, как я знаю, несколько отличается от подхода GitLab.

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

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

person Flowers4Life    schedule 28.10.2016