Я переключился на мастера после разработки на ветке в течение длительного времени. Журнал показывает:
Ваша ветвь отстает от 'origin / master' на 167 коммитов и может быть быстро перенесена.
Я попытался:
git checkout HEAD
Это не имеет никакого эффекта. Это потому, что у меня есть промежуточный коммит на мастере.
Как заставить мастера остаться на голове?
git checkout HEAD
никогда ничего не делаетHEAD
уже означает извлеченный коммит.Ответы:
Выполнение:
извлечет и объединит
origin/master
ветку (вы можете просто сказать,git pull
что origin является значением по умолчанию).источник
Попробуй
git merge origin/master
. Если вы хотите быть уверены, что это только ускоренная перемотка вперед, вы можете сказатьgit merge --ff-only origin/master
.источник
merge
команду, чтобы мне не нужно было проходить повторную аутентификацию.--ff-only
очень полезно.origin/master
требуется ли эта часть или она имеет разумные значения по умолчанию, но я нашел полезным создать псевдоним для ускоренной перемотки вперед, поэтому я хотел убедиться, что ветвь upstream используется вместо жесткого кодированияorigin/master
:ff = merge --ff-only @{u}
(@{u}
является восходящей) ,В вашей ситуации,
git rebase
также сделал бы свое дело . Поскольку у вас нет изменений, которых нет у мастера, git просто перемотает вперед. Если вы работаете с рабочим процессом rebase, это может быть более целесообразно, поскольку вы не получите коммит слияния, если вы все испортите.источник
должен сделать работу.
Вы будете получать сообщение «Ваша ветвь позади» каждый раз, когда вы работаете над веткой, отличной от главной , кто-то меняет мастер, и вы выполняете git pull.
Теперь ссылка на источник / мастер удалена, но ваш мастер не объединен с ней.
теперь мастер находится за источником / мастером и может быть быстро переадресован
теперь ваш мастер и источник / мастер синхронизированы
источник
Если вы стоите в другой ветке и хотите проверить новейшую версию мастера, вы также можете сделать
git checkout -B master origin/master
источник
Для тех, кто хочет быструю перемотку вперед они не на к другой удаленной ветви (включая себя) , не проверяя , что ветвь, вы можете сделать:
Это в основном быстро вперед индекс ,
other
чтобы ,origin/master
если вы не наother
ветви. Вы можете перемотать несколько веток таким образом.Если вы работали над другой веткой в течение некоторого времени и хотели обновить устаревшие ветки с удаленной на соответствующую головку:
источник
Никаких сложностей не требуется, просто встаньте в своей ветке и сделайте гадость, это сработало для меня
Или, как вторая попытка git pull origin master только в случае, если вам не повезло с первой командой
источник
Для перебазирования на текущую локальный трекер ветви перемещения локальных изменений поверх последнего удаленного состояния:
В целом, для быстрой перемотки вперед и удаления локальных изменений ( полный сброс ) *:
для быстрой перемотки вперед и сохранения локальных изменений ( rebase ):
* - чтобы отменить изменение, вызванное непреднамеренным аппаратным сбросом, сначала выполните
git reflog
отображение состояния заголовка в обратном порядке, найдите хэш, на который указывал заголовок перед операцией сброса (обычно это очевидно), и принудительно сбросьте ветвь к этому хешу.источник
В вашем случае для ускоренной перемотки вперед выполните:
Это использует
--ff-only
опциюgit merge
, так как вопрос специально просит «перемотка вперед».Вот выдержка из
git-merge(1)
этого, которая показывает больше опций ускоренной перемотки:Я перехожу достаточно часто, чтобы оправдать псевдоним:
Теперь я могу запустить это для ускоренной перемотки вперед:
источник
Переместите указатель вашей ветки на ГОЛОВУ:
Ваша ветка
master
уже существует, поэтому git не позволит вам перезаписать ее, если вы не используете ...-f
(этот аргумент обозначает--force
)Или вы можете использовать rebase:
Делайте это на свой страх и риск;)
источник