remote origin example ejemplo git git-rebase git-pull git-fetch

origin - git pull remote



git pull VS git fetch git rebase (2)

Debería ser bastante obvio de tu pregunta que en realidad solo estás preguntando acerca de la diferencia entre git merge y git rebase .

Así que supongamos que estás en el caso común: has hecho un trabajo en tu rama maestra y obtuviste datos de origen, que también ha hecho un poco 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, terminará con esto:

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

Si, por otro lado, hicieras la rebase apropiada, 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; Usted acaba de crear una historia diferente que conduce a ella . El rebase reescribe su historial, haciendo que parezca que se ha comprometido en la parte superior de la nueva rama maestra ( R ) del origen, en lugar de donde se comprometió originalmente ( H ). Nunca debe utilizar el enfoque de rebase si alguien más ya ha retirado de su rama maestra.

Finalmente, tenga en cuenta que realmente puede configurar git pull para que una rama dada use rebase en lugar de fusionar configurando la branch.<name>.rebase parámetro de configuración branch.<name>.rebase en verdadero. También puedes hacer esto para un solo tirón usando git pull --rebase .

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

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


En respuesta a su primera declaración, ''git pull es como una combinación git fetch + git. '',

"En su modo predeterminado, git pull es una abreviatura de git fetch seguido de git merge FETCH_HEAD" Más precisamente, git pull ejecuta git fetch con los parámetros dados y llama a git merge para combinar las cabezas de rama recuperadas en la rama actual "

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


Para su segunda pregunta / pregunta: ''Pero, ¿cuál es la diferencia entre git pull VS git fetch + git rebase'' De nuevo, de la misma fuente:

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


Ahora, si desea preguntar la diferencia entre búsqueda y combinación, también se responde aquí: https://git-scm.com/book/en/v2/Git-Branching-Rebasing (la diferencia entre modificar la forma en que el historial de versiones se graba y lo que no)