Estou recebendo o seguinte ao executar git status
Your branch is ahead of 'origin/master' by 3 commits.
Eu li em algum outro post a maneira de corrigir isso é executado, git pull --rebase
mas o que exatamente é rebase, vou perder dados ou é essa maneira simples de sincronizar com o mestre?
git
git-rebase
FluxEngine
fonte
fonte
Respostas:
Você recebe essa mensagem porque fez alterações no seu mestre local e não as enviou para o controle remoto. Você tem várias maneiras de "resolvê-lo" e normalmente depende da aparência do seu fluxo de trabalho:
git push origin
assumir que a origem é seu controle remotogit reset --hard origin/master
fonte
git diff master origin/master
(ie.git diff local remote
) Para ver as alterações que vocêgit push origin master:branch
que retornouEverything up-to-date
, depois que a mensagem de estar à frente por x commits foi embora.Não há nada para consertar. Você simplesmente fez 3 confirmações e ainda não as moveu para a ramificação remota. Existem várias opções, dependendo do que você deseja fazer:
git push
: mova suas alterações para o controle remoto (isso pode ser rejeitado se já houver outras alterações no controle remoto)git pull
: obtenha as alterações (se houver) do controle remoto e junte-as às alteraçõesgit pull --rebase
: como acima, mas tente refazer seus commits além das alterações remotasVocê está em uma situação clássica (embora normalmente você não se comprometa muito com o mestre na maioria dos fluxos de trabalho). Aqui está o que eu normalmente faria: Revise minhas alterações. Talvez faça
git rebase --interactive
alguns cosméticos neles, largue os que sugam, reordene-os para torná-los mais lógicos. Agora mova-os para o controle remoto comgit push
. Se isso for rejeitado porque minha filial local não está atualizada:git pull --rebase
refazer meu trabalho além das alterações mais recentesgit push
.fonte
your team lead merged to master
? Você não disse que já tentou dominar? O que o commit extra contém? Tentegit diff origin/master
ver como sua filial local difere do controle remoto.Use estes 4 comandos simples
Etapa 1 :
git checkout <branch_name>
É óbvio entrar nesse ramo.
Etapa 2 :
git pull -s recursive -X theirs
Faça alterações remotas nas ramificações e substitua-as pelas alterações, se houver conflito. Aqui, se você
git status
conseguir algo assim, seu ramo estará à frente de 'origin / master' em 3 commits.Etapa 3 :
git reset --hard origin/<branch_name>
Etapa 4 :
git fetch
Reinicialize seu ramo com força.
Aproveitar.
fonte
Me deparei com esse problema após mesclar uma solicitação de recebimento no Bitbucket.
Tive que fazer
e foi isso.
fonte
Normalmente, se eu tiver que verificar quais são os commits que diferem do master que eu faço:
Desta forma, eu posso ver os commits e decidir abandoná-lo ou escolher ...
fonte
git diff ...
mágicas não funcionariam. Quando fiz isso, ele me deunoop
como o único commit e, quando o aceitei, agora minha ramificação está sincronizada com a origem / mestre. Portanto, parece que os commits diff da origem / mestre não estavam em efeito.Esta mensagem de
git
significa que você fez três confirmações em seumaster
repositório local e não as publicou no repositório. O comando a ser executado para isso égit push {local branch name} {remote branch name}
.O comando
git pull
(egit pull --rebase
) é para a outra situação em que há confirmação no repositório remoto que você não possui no repositório local. A--rebase
opção significa quegit
irá afastar a confirmação local, sincronizar com o repositório remoto e tentar aplicar as três confirmações no novo estado. Pode falhar se houver conflito, mas você será solicitado a resolvê-lo. Você também pode abortarrebase
se não souber como resolver os conflitos usandogit rebase --abort
e voltará ao estado antes de executargit pull --rebase
.fonte
Se o seu git diz que você está comprometido com a frente, então apenas Primeiro,
Para garantir que você tenha enviado todos os seus trabalhos mais recentes no repositório
Então,
Para redefinir e combinar com o repositório
fonte
Isso aconteceu comigo uma vez após mesclar uma solicitação de recebimento no Bitbucket.
Eu só tinha que fazer:
git fetch
Meu problema foi resolvido. Eu espero que isso ajude!!!
fonte
finalmente:
fonte