Портирование¶
Если вы добавили какую-то функцию в одну ветку и вам нужно добавить ее в другую ветку, то вам нужно сделать * 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