git pull VS git fetch git rebase


Otra pregunta dijo git pull es como un git fetch + git merge.

Pero, ¿cuál es la diferencia entre git pull VS git fetch + git rebase?

Author: Community, 2010-07-29

2 answers

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.

Así que supongamos que estás en el caso común - has hecho algo de trabajo en tu rama maestra, y sacas de 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), asumiendo que no hay ningún conflicto, termina con esto:

- o - o - o - H - A - B - C - X (master)
               \             /
                P - Q - R --- (origin/master)

Si por otro lado hicieras el rebase apropiado, terminarías con esto: {[11]]}

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

El contenido de tu árbol de trabajo debe terminar igual en ambos casos; acabas de crear un historial diferente que lo lleve a. La rebase reescribe tu historial, haciendo que parezca que te has comprometido en la parte superior de la nueva rama maestra de origin (R), en lugar de donde te comprometiste originalmente (H). Nunca debe usar el enfoque de rebase si alguien más tiene ya lo sacaste de tu rama principal.

Finalmente, tenga en cuenta que puede configurar git pull para que una rama dada use rebase en lugar de merge estableciendo el parámetro config branch.<name>.rebase en true. También puede hacer esto para una sola extracción usando git pull --rebase.

 309
Author: Cascabel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-19 11:04:40

En respuesta a tu primera declaración 'git pull es como un git fetch + git merge.',

" En su modo predeterminado, git pull es una abreviatura de git fetch seguida de git merge FETCH_HEAD " Más precisamente, git pull ejecuta git fetch con el parámetros dados y llamadas git merge para fusionar la rama recuperada se dirige a la rama actual "

(Ref: https://git-scm.com/docs/git-pull )


Para su segunda declaración/pregunta: ' Pero qué es la diferencia entre git pull VS git fetch + git rebase' De nuevo, de la misma fuente:

"Con reb rebase, ejecuta git rebase en lugar de git merge."


Ahora, si desea preguntar la diferencia entre fetch y merge, que se responde aquí también: https://git-scm.com/book/en/v2/Git-Branching-Rebasing (la diferencia entre alterar la forma en que se registra el historial de versiones y lo que no)

 -1
Author: harshvchawla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-12 04:52:31