Портирование

Если вы добавили какую-то функцию в одну ветку и вам нужно добавить ее в другую ветку, то вам нужно сделать * port *.

Смотрите также:

Форвард-порт

Это самый простой случай. Вы объединяете коммиты из более старой ветви (например, 8.0) в более новую ветку (например, 9.0)

git checkout 9.0
git merge origin/8.0

# [Resolve conflicts if needed]

git push

После `` git merge`` вам, вероятно, понадобится внести небольшие изменения. В этом случае просто добавьте новые коммиты в более новую ветку

git add ...
git commit -m "...."
git push

Back-порт

Если вам нужно перенести новую функцию из более новой ветви (например, 9.0) в более старую (например, 8.0), то вы должны сделать * back-port *.

Проблема здесь в том, что в более новой ветви есть коммиты, которые должны применяться только для более новой ветви. То есть вы не можете просто сделать `` git merge 9.0``, потому что он приносит коммиты только 9.0 в ветку 8.0. Возможные решения здесь:

мерзавец

Применить коммиты из более новой ветви (например, 9.0) к более старой ветви (например, 8.0):

git checkout 8.0

git cherry-pick <commit-1>
# [Resolve conflicts if needed]

git cherry-pick <commit-2>
# [Resolve conflicts if needed]
# ...

git push

Также можно выбрать коммит из любого удаленного репозитория. Добавьте этот репозиторий к вашим пультам. Извлекай из этого. А потом вишня.

Вишневый выбор коммитов

Команда `` git cherry-pick A..B`` применяет коммиты между A и B, но без A (A должен быть старше B). Чтобы применить диапазон коммитов, используйте формат следующим образом:

git cherry-pick A^..B

Например, чтобы зарегистрировать этот PR https://github.com/it-projects-llc/odoo-saas-tools/pull/286/commits, используйте команду

git cherry-pick 6ee4fa07d4c0adc837d7061e09da14638d8abf8d^..9133939a25f9e163f52e6662045fc2dc6010ac14