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

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

затем я совершил новую работу и ошибки в master.

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

9 ответов


Проверьте aq ветвь и rebase от 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

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


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

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на ветку, которая сохранит имена фиксации, но не перебазирует, если это удаленная ветвь. Ты можешь!--1--> Если вы не заботитесь о сохранении имен фиксации. Если вы хотите сохранить имена фиксации, и это удаленная ветвь git cherry-pick <commit hash> коммиты на ветке.