Comecei a usar o git há algum tempo e não entendo completamente os meandros. Minha pergunta básica aqui é descobrir a diferença entre a git pull
e git pull --rebase
, já que adicionar a --rebase
opção não parece fazer algo muito diferente: apenas dá um puxão.
Por favor, ajude-me a entender a diferença.
Respostas:
git pull
=git fetch
+git merge
contra rastreamento da filial a montantegit pull --rebase
=git fetch
+git rebase
contra rastreamento da filial a montanteSe você quiser saber como
git merge
egit rebase
diferir, leia isto .fonte
git pull --rebase
é o mesmogit fetch
egit rebase
é basicamente como é, mas não é exatamente semanticamente equivalente. Existem algumas diferenças, algumas das quais são explicadas aqui. gitolite.com/git-pull--rebasefetch
?Resposta retirada (e ligeiramente modificada):
http://gitolite.com/git-pull--rebase
fonte
a---b+c---d+e---f---p'---q'---r' (foo)
desde que a rebase mude os hashes.A
e enviei um PR ao repositório upstream que foi aceito. Então, quando fiz issogit pull --rebase
contra o repo upstream, não recebi um novoA'
commit em cima do repo upstream puxado. De fato, nãoA'
existia. Isso ocorre porqueA
foi mesclado no sistema? Ou é porque não havia diferença entre o upstream e meu rebased para a versão?git pull --rebase
. Mas uma coisa que me confunde nessa situação hipotética é que o mantenedor upstream mudou o histórico do projeto que já foi puxado para os repositórios do desenvolvedor local. Isso não é apenas uma prática ruim em geral? Se ele quisesse comprimir / reescrever o histórico, isso deveria ter sido feito antes de integrá-lo ao repositório central para evitar esse tipo de conflito.Suponha que você tenha duas confirmações na ramificação local:
Após "git pull", será:
Após "git pull --rebase", não haverá ponto de mesclagem G. Observe que D e E se tornam diferentes commits:
fonte
git rebase
faz? Mas estamos falando sobregit pull --rebase
. E eles são coisas diferentes.No caso mais simples, sem colisões
Veja também:
man git-pull
Veja também:
Quando devo usar o git pull --rebase?
http://git-scm.com/book/en/Git-Branching-Rebasing
fonte
git sdd modified-file; git rebase --continue
ou merge:git add modified-file; git commit;
ondemodified-file
é o seu arquivo local você modificou manualmente / mergetoolfetch
? Por que eles criaram doisrebase
fluxos? 1)git rebase
e 2)git pull --rebase
?Para isso, é importante entender a diferença entre Mesclar e Rebase.
Para detalhes, consulte - http://www.derekgourlay.com/archives/428
fonte