Otra pregunta que se dice git pull
es como un git fetch
+ git merge
.
Pero, ¿cuál es la diferencia entre git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
Miguel
fuente
fuente
Respuestas:
Debería ser bastante obvio a partir de su pregunta que en realidad solo está preguntando sobre la diferencia entre
git merge
ygit rebase
.Entonces, supongamos que está en el caso común: ha realizado un trabajo en su rama maestra y extrae del origen, que también ha hecho algo de trabajo. Después de la búsqueda, las cosas se ven así:
Si se fusiona en este punto (el comportamiento predeterminado de git pull), suponiendo que no haya conflictos, terminará con esto:
Si, por otro lado, hiciste el rebase apropiado, terminarías con esto:
El contenido de su árbol de trabajo debería terminar igual en ambos casos; acabas de crear una historia diferente antes de eso . El rebase reescribe su historial, haciendo que parezca que se ha comprometido encima de la nueva rama maestra de origen (
R
), en lugar de donde se comprometió originalmente (H
). Nunca debe usar el enfoque de rebase si alguien más ya se ha retirado de su rama maestra.Finalmente, tenga en cuenta que en realidad puede configurar
git pull
una rama determinada para usar rebase en lugar de fusionar estableciendo el parámetro configbranch.<name>.rebase
en true. También puede hacer esto para un solo tirón usandogit pull --rebase
.fuente
TLDR:
git pull
es como corrergit fetch
entoncesgit merge
git pull --rebase
es comogit fetch
entoncesgit rebase
En respuesta a tu primera declaración,
git pull
es como ungit fetch
+git merge
.(Ref: https://git-scm.com/docs/git-pull )
Para su segunda declaración / pregunta:
'Pero, ¿cuál es la diferencia entre
git pull
VSgit fetch
+git rebase
'De nuevo, de la misma fuente:
git pull --rebase
Ahora, si quisieras preguntar
'la diferencia entre
merge
yrebase
'eso también se responde aquí:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(la diferencia entre alterar la forma en que se registra el historial de versiones)
fuente
git fetch + git rebase
funcionan los comandos a partir de ahora. No hay más o menos conflicto en nuestro árbol de git a partir de ahora :)