Получить изменения от мастера в филиал в Git - PullRequest
583 голосов
/ 17 марта 2011

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

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

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

Ответы [ 9 ]

671 голосов
/ 17 марта 2011

Извлеките ветку aq и перебазируйте с master.

git checkout aq
git rebase master
256 голосов
/ 17 марта 2011

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

git checkout aq
git merge origin/master
81 голосов
/ 21 августа 2014

Сначала вернитесь к мастеру:

git checkout master

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

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

git checkout aq
git merge master

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

23 голосов
/ 18 марта 2011

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

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

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

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

git merge hotfixes

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

16 голосов
/ 17 марта 2011

Либо cherry-pick соответствующий коммит в ветку aq, либо слияние ветки master в ветку aq.

8 голосов
/ 10 апреля 2018

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

git checkout master
git pull
git checkout aq
git merge --no-ff master
git push
7 голосов
/ 19 мая 2017

Простой способ

# 1. Create a new remote branch A base on last master
# 2. Checkout A
# 3. Merge aq to A
6 голосов
/ 06 июля 2016

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

git fetch origin <base branch name>  
git merge FETCH_HEAD

так в этом случае:

git fetch origin master  
git merge FETCH_HEAD
2 голосов
/ 28 января 2017

У вас есть пара вариантов.git rebase master aq на ветку, в которой будут храниться имена коммитов, но НЕ ПЕРЕДАТЬ, если это удаленная ветка.Вы можете git merge master aq, если вам не важно сохранять имена коммитов.Если вы хотите сохранить имена коммитов, а это удаленная ветка git cherry-pick <commit hash>, то коммиты в вашу ветку.

...