Получить изменения из master в branch в Git



в моем репозитории у меня есть ветка под названием aq над которым я работаю.



Я тогда совершил новую работу и баги в master.



каков наилучший способ получить эти коммиты в aq ветку? Создайте еще одну новую ветку из master и объединить его с aq?

784   9  

9 ответов:

Проверьте aq филиала, и перебазировать из master.

git checkout aq
git rebase master

вы должны быть в состоянии просто git merge origin/master когда вы находитесь на своей ветке aq.

git checkout aq
git merge origin/master

сначала проверьте, чтобы освоить:

git checkout master

сделайте все изменения, исправления и фиксации и нажмите свой мастер.

вернитесь в свою ветку, 'aq', и объедините мастер в ней:

git checkout aq
git merge master

ваша ветка будет обновлена с мастером. Хорошим и основным примером слияния является 3.2 Git ветвление-основное ветвление и слияние.

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

git checkout aq
git cherry-pick commit1
git cherry-pick commit2
git cherry-pick commit3
...

предполагая, что эти коммиты представляют исправления ошибок.

С этого момента, хотя, держите исправления ошибок в отдельной ветке. Вы сможете просто

git merge hotfixes

когда вы хотите свернуть их все в обычную ветку dev.

или cherry-pick соответствующие коммиты в ветку aq или слияния филиала master в филиал aq.

независимо от того, что rebase или merge является правильным, но что делать, если у вас есть несколько коммитов в вашей ветке aq, rebase или merge будет содержать другие изменения людей при отправке запроса на вытягивание, или что делать, если сквош коммитов в один коммит, поэтому я думаю, что у меня есть способ (не лучший способ, но очень безопасный и понятный)

# 1. Create a new remote branch A base on last master
# 2. Checkout A
# 3. Merge aq to A

для меня, у меня были изменения уже на месте, и я хотел последнюю из базовой ветви. Я не смог сделать rebase и cherry-pick заняло бы целую вечность, поэтому я сделал следующее:

git fetch origin <base branch name>  
git merge FETCH_HEAD

таким образом:

git fetch origin master  
git merge FETCH_HEAD

объединить его с aq

git checkout master
git pull
git checkout aq
git merge --no-ff master
git push

у вас есть пара вариантов. git rebase master aqна ветку, которая будет хранить имена фиксации, но не перебазировать, если это удаленная ветка. Вы можете git merge master aq Если вы не заботитесь о сохранении имен фиксации. Если вы хотите сохранить имена фиксации, и это удаленная ветвь git cherry-pick <commit hash> фиксация на вашей ветке.

Comments

    Ничего не найдено.