Я сейчас работаю над featurex
веткой. Наша основная ветка называется веткой our-team
. С тех пор, как я начал работать featurex
, в ветку было внесено больше изменений our-team
. Прежде чем я буду настаивать featurex
на слиянии, я хотел бы локально получить все изменения из our-team
ветки, featurex
чтобы я мог убедиться, что все работает должным образом.
Я сделал это локально, чтобы получить все последние изменения из our-team
.
git checkout our-team
git pull
Как я могу это сделать?
Ответы:
Вы можете использовать rebase , например,
git rebase our-team
когда находитесь в своей веткеfeaturex
Он переместит начальную точку ветки в конец вашей
our-team
ветки, объединяя все изменения в вашейfeaturex
ветке.источник
git checkout our-team git pull git checkout featurex git merge our-team
our-team
локальных изменений, вам нужно будет запустить егоgit fetch && git rebase origin/our-team
. Ваши команды предполагают, что репозиторий был обновлен ранее.перейти в главную ветку
our-team
вытащить все новые изменения из
our-team
веткииди в свой филиал
featurex
featurex
объединить изменения
our-team
ветки вfeaturex
веткуour-team
{commit-hash}
если вы хотите объединить определенные коммитыпротолкните свои изменения с изменениями
our-team
веткиПримечание : возможно, вам придется исправить конфликты после объединения
our-team
ветки вfeaturex
ветку перед тем, как нажатьисточник
или же
но сначала вы должны убедиться, что вы уже находитесь в ветке, до которой хотите обновить (featurex).
источник
Вы почти у цели :)
Все, что осталось, это
Это объединит нашу команду в featurex.
Вышеупомянутое предполагает, что вы уже зафиксировали / сохранили свои изменения в featurex, если это не так, вам нужно будет сначала сделать это.
источник
Для других людей, пришедших на этот пост в Google. Есть 2 варианта: объединить или переустановить ветку. Оба работают по-разному, но имеют схожие результаты.
Общепринятый ответ является перебазироваться . Это займет все сделанные коммиты,
our-team
а затем применит сделанные к нимfeaturex
, предлагая вам объединить их по мере необходимости.Одно небольшое предостережение при перебазировании заключается в том, что вы теряете / переписываете историю веток, по сути говоря git, что ваша ветка началась не с фиксации 123abc, а с фиксации 456cde. Это будет создавать проблемы для других людей , работающих на ветке, и некоторые дистанционные инструменты будут жаловаться на это. Но если вы уверены в том, что делаете,
--force
флаг нужен именно для этого.То, что предлагают другие плакаты , - это слияние . Это возьмет
featurex
ветку, в каком бы состоянии она ни находилась, и попытается объединить ее с текущим состояниемour-team
, предлагая вам сделать одну большую фиксацию слияния и исправить все ошибки слияния перед нажатием наour-team
. Разница заключается в том, что вы подаете вашиfeaturex
коммиты , прежде чем наour-team
новых фиксаций , а затем фиксируя различия. Вы также не переписываете историю, вместо этого добавляя к ней одну фиксацию вместо того, чтобы переписывать предыдущие.Оба варианта действительны и могут работать в тандеме. Что обычно (я имею в виду, если вы используете широко распространенные инструменты и методологию, такие как git-flow ), делается для ветки функции, так это слияние ее с основной веткой, часто проходящей через запрос на слияние, и разрешение всех конфликтов. которые возникают в одном (или нескольких) коммитах слияния.
Перебазирование - это интересный вариант, который может помочь вам исправить вашу ветку до того, как в конечном итоге пройти слияние, и облегчить боль от необходимости делать одну большую фиксацию слияния.
источник