Как переместить ветку в голову?

Я перешел на мастера после разработки на ветке в течение длительного времени. Журнал показывает:

Ваша ветвь отстает от 'origin/master' на 167 коммитов и может быть быстро перенесена.

Я старался:

git checkout HEAD

Это не имеет никакого эффекта. Это потому, что у меня есть промежуточный коммит на мастере.

Как заставить мастера остаться на голове?

Ответ 1

Doing:

git checkout master
git pull origin

будет извлекать и объединять ветвь origin/master (вы можете просто сказать git pull, поскольку значение по умолчанию - по умолчанию).

Ответ 2

Попробуйте git merge origin/master. Если вы хотите быть уверенным, что он выполняет только перемотку вперед, вы можете сказать git merge --ff-only origin/master.

Ответ 3

В вашей ситуации git rebase также выполнит трюк. Поскольку у вас нет изменений, которые у мастера нет, git будет просто перемотка вперед. Если вы работаете с рабочим процессом rebase, это может быть более целесообразным, так как вы не закончите слияние, если вы испортите.

[email protected]:~/work$ git status
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean
[email protected]:~/work$ git rebase
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
# On branch master
nothing to commit, working directory clean

Ответ 4

git checkout master
git pull

должен выполнить эту работу.

Вы получите сообщение "Ваша ветка позади" каждый раз, когда вы работаете на ветке, отличной от мастера, кто-то делает изменения в master и вы git pull.

(branch) $ //hack hack hack, while someone push the changes to origin/master
(branch) $ git pull   

теперь ссылка на начало/мастер вытягивается, но ваш мастер не сливается с ней

(branch) $ git checkout master
(master) $ 

теперь мастер находится за оригиналом/мастером и может быть быстро перенаправлен

this will pull and merge (so merge also newer commits to origin/master)
(master) $ git pull 

this will just merge what you have already pulled
(master) $ git merge origin/master

теперь ваш мастер и источник/мастер синхронизированы

Ответ 5

Если вы находитесь на другой ветке и хотите проверить новейшую версию мастера, вы также можете сделать

git checkout -B master origin/master

Ответ 6

Никаких сложностей не требуется просто встаньте на свою ветку и сделайте git pull, это сработало для меня

Или, как вторая попытка git оттянуть исходный мастер только в том случае, если вам не повезло с первой командой

Ответ 7

Переместите указатель вашей ветки на ГОЛОВУ:

git branch -f master

Ваш master ветки уже существует, поэтому git не позволит вам перезаписать его, если вы не используете... -f (этот аргумент означает --force)

Или вы можете использовать rebase:

git rebase HEAD master

Делайте это на свой страх и риск;)

Ответ 8

Чтобы перебазировать текущую локальную ветку трекера, перемещая локальные изменения поверх последнего удаленного состояния:

$ git fetch && git rebase

В целом, для быстрой перемотки вперед и удаления локальных изменений (полный сброс) *:

$ git fetch && git checkout ${the_branch_name} && git reset --hard origin/${the_branch_name}

для быстрой перемотки вперед и сохранения локальных изменений (rebase):

$ git fetch && git checkout ${the_branch_name} && git rebase origin/${the_branch_name}

* - чтобы отменить изменение, вызванное непреднамеренным аппаратным сбросом, сначала выполните git reflog, которая отображает состояние git reflog в обратном порядке, найдите хэш, на который указывал git reflog перед операцией сброса (обычно это очевидно), и принудительно сбросьте ветвь к этому. хэш.