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
?
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
?
Respuestas:
Debería ser bastante obvio a partir de su pregunta que en realidad solo está preguntando sobre la diferencia entre git merge
y git 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í:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Si se fusiona en este punto (el comportamiento predeterminado de git pull), suponiendo que no haya conflictos, terminará con esto:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Si, por otro lado, hiciste el rebase apropiado, terminarías con esto:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
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 config branch.<name>.rebase
en true. También puede hacer esto para un solo tirón usando git pull --rebase
.
git pull
es como correr git fetch
entonces git merge
git pull --rebase
es como git fetch
entoncesgit rebase
git pull
es como un git fetch
+ git merge
.
"En su modo predeterminado, git pull es una abreviatura
git fetch
seguida degit merge
FETCH_HEAD" Más precisamente, segit pull
ejecutagit fetch
con los parámetros dados y luego llamagit merge
para fusionar las cabezas de rama recuperadas en la rama actual "
(Ref: https://git-scm.com/docs/git-pull )
'Pero, ¿cuál es la diferencia entre git pull
VS git fetch
+ git rebase
'
De nuevo, de la misma fuente:
git pull --rebase
"Con --rebase, ejecuta git rebase en lugar de git merge".
'la diferencia entre merge
y rebase
'
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)
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 :)