Git - Слияние с rebase

Я смотрел на Когда вы используете git rebase вместо git merge? ,

Но я хотел бы быть уверен, какое решение выбрать в этом случае:

Я хочу реализовать новую функцию на master поэтому я добавляю ее в новую ветку Feature.
Я делаю 10 коммитов на Feature, в то время как кто-то другой делает коммиты на Master.

Мой вопрос заключается в том, хочу ли я отделить свою ветку от Мастера для целей тестирования, но мне нужно протестировать ее с интегрированными новыми мастер-коммитами. Итак, я должен объединить Мастер в Feature (а не Feature в Master, который бы применил мои модификации на Master перед моим тестированием) или сделать rebase?

Ответ 1

Почему бы не создать новую ветку для проверки объединенной версии? Например:

git checkout -b test-merged-feature master
git merge my-feature
[... do your testing ..]

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

Ответ 2

Если вы уже не нажали свою ветку (и вы знаете, что другие клонировали ваше репо), я все равно сделаю rebase, как я упомянул в своем собственном ответе "git rebase vs git merge".

Протестируйте или нет, я обычно делаю rebase каждый раз, когда я обновляю свое местное репо (git fetch), чтобы гарантировать окончательное слияние (Feature to master) будет быстро пересылаться.

Итак, речь идет не только о том, как выглядит ваша история, но в основном о том, чтобы убедиться, что то, что вы разрабатываете, не основано на старой версии master и продолжает работать против последних изменений, сделанных в master со временем.

Ответ 3

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

Я перестраивался по отношению к "производным" ветвям. (по производным ветвям, я имею в виду направление AWAY из ствола) и слияние к ветвям интеграции.

Мне нравится, что я всегда работаю в ветке, которая имеет ту же историю, что и ветка, с которой я буду интегрироваться. Мне нравится, что слияние становится быстрым, поэтому я знаю, что то, что я только что слил, точно такое же, как и то, что я только что тестировал в своей ветке.

Ответ 4

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