Eu tenho um projeto clonado de uma ramificação mestre do repositório remoto remote_repo
. Crio um novo ramo e me comprometo com esse ramo. Outros programadores passaram para remote_repo
a ramificação principal.
Agora preciso refazer minha ramificação RB no remote_repo
mestre.
Como fazer isso? Quais comandos para digitar em um terminal?
git
clone
git-rebase
Damir
fonte
fonte
Respostas:
Primeiro, busque o novo mestre no repositório upstream, depois refaça sua ramificação de trabalho com isso:
Atualização : Veja a resposta de Paul Draper para uma maneira mais concisa de fazer o mesmo - as versões recentes do Git fornecem uma maneira mais simples de executar o equivalente aos dois comandos acima.
fonte
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
Parece quegit pull
é necessário outro . Isso está correto ou estou faltando alguma coisa aqui?git rebase master
não fará o mesmo trabalho que o segundo comando (git rebase origin/master
) desdemaster
eorigin/master
pode apontar para confirmações diferentes (especialmente considerando que o primeiro comando foigit fetch origin
, que pode ser modificadoorigin/master
).fonte
git pull --rebase=interactive origin master
dev
e executadogit pull --rebase origin master
, apenas o ramodev
será modificado, nãomaster
. A--rebase
documentação do sinalizador indica que ele tentarebase the current branch on top of the upstream branch after fetching
e nada sobre a modificação de ramificações de rastreamento local.Depois de confirmar as alterações em sua filial, faça o checkout
master
e obtenha-as para obter as alterações mais recentes do repositório:Em seguida, efetue o checkout de sua filial e refaça as alterações em
master
:... ou últimos dois comandos em uma linha:
Ao tentar voltar
origin/RB
, você provavelmente receberá um erro; se você é o único a trabalharRB
, pode forçar o push:... ou da seguinte forma, se você tiver configurado o git adequadamente:
fonte
git push
prescindir-f
).Nota: Se você já possui amplo conhecimento sobre rebase, use abaixo de um liner para rebase rápido. Solução: Supondo que você esteja no seu ramo de trabalho e você seja a única pessoa que trabalha nele.
Resolva quaisquer conflitos, teste seu código, confirme e envie novas alterações para a filial remota.
As etapas a seguir podem ajudar quem é novo
git rebase
e deseja fazê-lo sem problemasEtapa 1: Supondo que não haja confirmações e alterações a serem feitas no YourBranch neste momento. Estamos visitando o YourBranch.
O que aconteceu? Puxa todas as alterações feitas por outros desenvolvedores que trabalham em sua filial e refaz suas alterações sobre ela.
Etapa 2: resolva todos os conflitos que apresentar.
Etapa 3:
O que aconteceu? Puxa todas as alterações mais recentes do mestre remoto e refaz o mestre local no mestre remoto. Eu sempre mantenho o mestre remoto limpo e o lançamento pronto! E prefira apenas trabalhar no mestre ou nas ramificações localmente. Eu recomendo fazer isso até você obter uma mão nas alterações ou confirmações do git. Nota: Esta etapa não é necessária se você não estiver mantendo o mestre local; em vez disso, é possível buscar e refazer o mestre remoto diretamente na ramificação local. Como eu mencionei na única etapa no início.
Etapa 4: resolva todos os conflitos que apresentar.
Etapa 5:
O que aconteceu? Rebase no master acontece
Etapa 6: resolva quaisquer conflitos, se houver conflitos. Use
git rebase --continue
para continuar a rebase depois de adicionar os conflitos resolvidos. A qualquer momento, você pode usargit rebase --abort
para abortar o rebase.Etapa 7:
O que aconteceu? Enviar alterações para o YourBranch remoto.
--force-with-lease
garantirá se há outras alterações recebidas do YourBranch por outros desenvolvedores enquanto você refaz o processo. Isso é super útil, e não forçado. Caso haja alguma alteração recebida, busque-a para atualizar o YourBranch local antes de enviar as alterações.Por que preciso fazer alterações? Para reescrever a mensagem de confirmação no YourBranch remoto após uma nova reformulação adequada ou se houver algum conflito resolvido? Em seguida, é necessário enviar as alterações que você resolveu no repositório local para o repositório remoto do YourBranch
Yahoooo ...! Você terminou com êxito o rebase.
Você também pode estar pensando em fazer:
Quando e porque? Mesclar sua filial no master, se isso for feito com alterações feitas por você e por outros co-desenvolvedores. O que torna o YourBranch atualizado com o mestre quando você deseja trabalhar no mesmo ramo posteriormente.
fonte
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
. Vou atualizar minha descrição.Passo 1:
Passo 2:
Etapa 3: (Corrija se houver algum conflito)
Passo 4:
Etapa 5:
fonte
1. Atualize o mestre primeiro ...
2.Agora rebase fonte-ramo com ramo principal
Se a ramificação de origem ainda não existir no controle remoto, faça:
"et voila ..."
fonte
git fetch origin master:master
puxa a versão mais recente do master sem precisar verificar.Então, tudo que você precisa é:
git fetch origin master:master && git rebase master
👌fonte
git fetch
atualiza o mestre sem precisar verificar também? Exceto que as atualizaçõesgit fetch
não estãogit merge
corretas? Portanto, se fizermos o checkout,master
ele não terá as atualizações mais recentes. Então não é mais curto para fazer enquanto no ramo de funcionalidade,git fetch
entãogit rebase origin/master
? Não podemos fazergit rebase master
isso, porque isso tentará se recuperar domaster
espaço de trabalho. Precisamosorigin/master
sair do imerso, mas sentado no local.