Git: Какой самый быстрый способ объединить рабочую ветку с мастером? - PullRequest
3 голосов
/ 11 февраля 2012

Предположим, я был на ветке master и создал новую ветку:

git checkout -b feature_branch

Я начал работать на feature_branch, и в какой-то момент я хотел бы объединить свои изменения в masterиспользуя rebase.Итак, я делаю:

# Get the latest code on master
git checkout master
git pull

# Rebase on master and push the most updated 'feature_branch'
git checkout feature_branch
git rebase master
git push

# Merge 'feature_branch' to 'master' and push the updated 'master'
git checkout master
git merge feature_branch
git push

# Back to work on 'feature_branch'
git checkout feature_branch

Есть ли способ уменьшить количество шагов и добиться того же?

В конце процесса мне бы хотелось master, origin/master, feature_branch и origin/feature_branch, чтобы указать на тот же коммит.

1 Ответ

2 голосов
/ 11 февраля 2012

Вы можете удалить пару команд.Это делает то же самое:

# you have to have the branch checked out to pull, since pulling means merging
# into master, and you need a work tree to merge in
git checkout master
git pull

# no need to check out first; rebase does the right thing with two arguments
git rebase master feature_branch

git checkout master
git merge feature_branch

# git push by default pushes all branches that exist here and on the remote
git push

git checkout feature_branch

Строго говоря, слияние с мастером гарантированно будет быстрой перемоткой вперед (тривиальное слияние), поэтому на самом деле ему не нужно рабочее дерево, но на самом делевстроенный способ пропустить оформить заказ.Есть обходные пути, например, вставка в тот же репозиторий: git push . feature_branch:master (безопасно, но странно) или прямое обновление ссылки: git update-ref master feature_branch (небезопасно - не проверяет, есть ли ускоренная перемотка вперед), но обычно вы можете простобыстрое переключение ветвей.

Также обратите внимание, что если вы не хотите перебазировать ветвь функции, вы можете просто пропустить это, не переписывать feature_branch, и получить коммит слияния в master вместо rebased feature_branch иускоренное слияние.

...