Eu tenho uma ramificação local de um projeto ("configUpdate") que extraí do projeto de outra pessoa e fiz várias alterações nele e gostaria de mesclar as alterações feitas na ramificação local.
eu tentei
git pull --rebase origin configUpdate
mas não conseguiu as últimas alterações - como posso mesclar as duas? (também para pontos de bônus, o que eu fiz com o pull --rebase
comando?)
Respostas:
No seu ramo de recursos (por exemplo
configUpdate
), execute:Ou a forma mais curta:
Por que isso funciona:
git merge branchname
pega novas confirmações da ramificaçãobranchname
e as adiciona à ramificação atual. Se necessário, ele adiciona automaticamente um commit "Merge" na parte superior.git rebase branchname
pega novas confirmações da ramificaçãobranchname
e as insere "em" suas alterações. Mais precisamente, ele modifica o histórico da ramificação atual, de forma que ela se baseie na ponta debranchname
, com as alterações feitas por cima.git pull
é basicamente o mesmo quegit fetch; git merge origin/master
.git pull --rebase
é basicamente o mesmo quegit fetch; git rebase origin/master
.Então, por que você iria querer usar
git pull --rebase
em vez degit pull
? Aqui está um exemplo simples:Você começa a trabalhar em um novo recurso.
No momento em que você está pronto para enviar suas alterações, vários commits foram enviados por outros desenvolvedores.
Se você
git pull
(que usa mesclagem), suas alterações serão ocultadas pelas novas confirmações, além de uma confirmação de mesclagem criada automaticamente.Se você
git pull --rebase
preferir, o git encaminhará seu mestre rapidamente para o upstream e aplicará suas alterações na parte superior.fonte
Eu descobri que era:
fonte
pull --rebase
não funcionou porqueorigin
estava apontando para o garfo. Teria funcionado se você fizessegit pull --rebase upstream/master
.Mudar para o seu ramo local
Mesclar o mestre remoto à sua filial
Caso haja algum conflito, corrija-o e, para cada arquivo em conflito, execute o comando
Continuar rebase
fonte
O git rebase não parecia funcionar para mim. Após a rebase do git, quando tento enviar alterações para minha ramificação local, continuava recebendo um erro ("dica: as atualizações foram rejeitadas porque a ponta da ramificação atual está atrás da contraparte remota. Integre as alterações remotas (por exemplo, 'git pull. .. ') antes de pressionar novamente. ") mesmo após o git pull. O que finalmente funcionou para mim foi o git merge.
Se você é iniciante como eu, aqui está um bom artigo sobre git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
fonte