Outra pergunta dita git pull
é como um git fetch
+ git merge
.
Mas qual é a diferença entre o git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
Michael
fonte
fonte
Respostas:
Deve ser bastante óbvio da sua pergunta que você realmente está apenas perguntando sobre a diferença entre
git merge
egit rebase
.Então, vamos supor que você esteja no caso comum - você fez algum trabalho em sua ramificação principal e extraiu da origem, que também fez algum trabalho. Após a busca, as coisas ficam assim:
Se você mesclar neste momento (o comportamento padrão do git pull), supondo que não haja conflitos, você termina com isso:
Se, por outro lado, você fez a rebase apropriada, você terminaria com isso:
O conteúdo da sua árvore de trabalho deve terminar o mesmo nos dois casos; você acabou de criar uma história diferente que antecede a ela . A reescrita reescreve seu histórico, fazendo parecer que você havia confirmado no topo da nova ramificação principal da origem (
R
), em vez de onde você originalmente confirmou (H
). Você nunca deve usar a abordagem de rebase se outra pessoa já tiver saído de sua ramificação principal.Por fim, observe que você pode realmente configurar
git pull
uma ramificação para usar rebase em vez de mesclar, definindo o parâmetro configbranch.<name>.rebase
como true. Você também pode fazer isso para uma única puxada usandogit pull --rebase
.fonte
TLDR:
git pull
é como corrergit fetch
entãogit merge
git pull --rebase
é comogit fetch
entãogit rebase
Em resposta à sua primeira declaração,
git pull
é como umgit fetch
+git merge
.(Ref: https://git-scm.com/docs/git-pull )
Para sua segunda declaração / pergunta:
'Mas qual é a diferença entre
git pull
VSgit fetch
+git rebase
'Novamente, da mesma fonte:
git pull --rebase
Agora, se você quiser perguntar
'a diferença entre
merge
erebase
'isso também é respondido aqui:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(a diferença entre alterar a maneira como o histórico da versão é registrado)
fonte
git fetch + git rebase
comandos funcionam a partir de agora. Não há mais ou menos conflito em nossa árvore git a partir de agora :)