Eu mudei para mestre depois de desenvolver um ramo por um longo tempo. O log mostra:
Sua ramificação está atrás de 'origem / mestre' por 167 confirmações e pode ser encaminhada rapidamente.
Eu tentei:
git checkout HEAD
Não tem efeito. Isso ocorre porque eu tenho uma verificação intermediária no master.
Como fazer o mestre ficar na cabeça?
git checkout HEAD
nunca faz nada.HEAD
já significa a confirmação do check-out.Respostas:
Fazendo:
irá buscar e mesclar o
origin/master
ramo (você pode apenas dizergit pull
que a origem é o padrão).fonte
Tente
git merge origin/master
. Se você quiser ter certeza de que ele faz apenas um avanço rápido, você pode dizergit merge --ff-only origin/master
.fonte
merge
comando para não precisar me autenticar novamente.--ff-only
é extremamente útil.origin/master
parte é necessária ou se é sensivelmente o padrão, mas achei útil criar um alias para avanço rápido, então eu queria ter certeza de que o ramo upstream é usado em vez de codificá-lo paraorigin/master
:ff = merge --ff-only @{u}
(@{u}
é upstream) .Na sua situação,
git rebase
também faria o truque. Como você não possui alterações que o mestre não possui, o git avança rapidamente. Se você estiver trabalhando com um fluxo de trabalho de rebase, isso pode ser mais aconselhável, pois você não terminaria com uma consolidação de mesclagem se errar.fonte
deve fazer o trabalho.
Você receberá a mensagem "Seu ramo está atrasado" toda vez que você trabalha em um ramo diferente do mestre , alguém muda para mestre e você git pull.
agora a referência de origem / mestre é puxada, mas seu mestre não é mesclado a ela
agora o mestre está por trás da origem / mestre e pode ser encaminhado rapidamente
agora seu mestre e origem / mestre estão sincronizados
fonte
Se você estiver em um ramo diferente e quiser fazer check-out da versão mais recente do master, também poderá fazer
git checkout -B master origin/master
fonte
Para quem deseja avançar rapidamente, eles não estão em outra ramificação remota (incluindo ela mesma) sem verificar essa ramificação, você pode:
Isso basicamente encaminha o índice de
other
paraorigin/master
se você não estiver noother
ramo. Você pode avançar várias ramificações dessa maneira.Se você trabalha em outro ramo por algum tempo e deseja atualizar ramos obsoletos do remoto para o respectivo cabeçalho:
fonte
Sem complexidades necessárias, basta ficar no seu ramo e fazer um git pull funcionou para mim
Ou, como uma segunda tentativa, tente o git pull origin master apenas no caso de você ter azar com o primeiro comando
fonte
Para refazer a ramificação do rastreador local atual, movendo as alterações locais sobre o estado remoto mais recente:
De maneira mais geral, para avançar e descartar as alterações locais ( reinicialização completa ) *:
para avançar e manter as alterações locais ( rebase ):
* - para desfazer a alteração causada pela reinicialização involuntária não intencional
git reflog
, que exibe o estado do HEAD em ordem inversa, encontre o hash que o HEAD estava apontando antes da operação de redefinição (geralmente óbvia) e redefina a ramificação para esse hash.fonte
No seu caso, para avançar rapidamente, execute:
Isso usa a
--ff-only
opção degit merge
, como a pergunta solicita especificamente "avanço rápido".Aqui está um trecho
git-merge(1)
que mostra mais opções de avanço rápido:Avanço com freqüência o suficiente para justificar um alias:
Agora eu posso executar isso para avançar:
fonte
Mova o ponteiro do seu ramo para HEAD:
Seu ramo
master
já existe, portanto o git não permitirá que você o substitua, a menos que você use ...-f
(este argumento significa--force
)Ou você pode usar rebase:
Faça por sua conta e risco;)
fonte