Git Pull vs Git Rebase

123

Soy un novato en Git, y tratando de aprender la diferencia entre git pullvs git rebase. ¿Alguien puede dar un ejemplo de cuándo usar qué opción, ya que creo que ambas tienen el mismo propósito?

usuario4943236
fuente
Sí, lo hice. La diferencia entre pull y rebase es que pull se fusiona. Entonces, la respuesta a su pregunta está en el enlace que pegué.
Thibault D.
1
@ user4943236 1) ni siquiera sabe quién votó en contra de su pregunta, no vaya acusando a la gente sin ninguna razón 2) si fuera mi voto en contra, no lo eliminaría simplemente porque es muy fácil encontrar una respuesta leyendo documentación
Tim
¿Responde esto a tu pregunta? git pull VS git fetch Vs git rebase
Shiwangini

Respuestas:

130

git pully git rebaseno son intercambiables, pero están estrechamente conectados.

git pullobtiene los últimos cambios de la rama actual desde un control remoto y aplica esos cambios a su copia local de la rama. Generalmente, esto se hace fusionando, es decir, los cambios locales se fusionan con los cambios remotos. Entonces git pulles similar a git fetch & git merge.

Rebasar es una alternativa a la fusión. En lugar de crear una nueva confirmación que combine las dos ramas, mueve las confirmaciones de una de las ramas encima de la otra.

Puede extraer usando rebase en lugar de merge ( git pull --rebase). Los cambios locales que realizó se volverán a basar sobre los cambios remotos, en lugar de fusionarse con los cambios remotos.

Atlassian tiene una excelente documentación sobre fusión frente a rebase .

Pedro
fuente
51

git-pull - Obtener e integrar con otro repositorio o una sucursal local GIT PULL

Básicamente, está tirando de una rama remota a su local, ejemplo:

git pull origin master

Llevará la rama maestra a su repositorio local

git-rebase: el puerto de avance local se compromete con el cabezal ascendente actualizado GIT REBASE

Este pone sus cambios locales encima de los cambios realizados de forma remota por otros usuarios. Por ejemplo:

  • Ha realizado algunos cambios en su sucursal local, por ejemplo, llamados SOME-FEATURE
  • Mientras tanto, su amigo estaba trabajando en otras funciones y fusionó su rama en master

Ahora desea ver sus cambios y los suyos en su sucursal local. Entonces, realiza la masterrama de pago :

git checkout master

entonces puedes tirar:

git pull origin master

y luego vas a tu sucursal:

git checkout SOME-FEATURE

y puede hacer una reorganización masterpara obtener los últimos cambios y poner sus confirmaciones de rama en la parte superior:

git rebase master

Espero que ahora te quede un poco más claro.

Tomasz
fuente
15
No es necesario realizar el pago con el maestro. Quédese en su rama y haga: git fetchentonces git rebase origin/master.
Antoine Martin
Al verificar el maestro local y luego extraer el maestro de origen, también se actualizará su maestro local. Esta es una de las mejores prácticas que se deben utilizar
Ashwani
20

En pocas palabras:

-> Git Merge: simplemente fusionará sus cambios y los cambios remotos, y eso creará otro registro del historial de confirmaciones

-> Git Rebase: pondrá sus cambios por encima de todos los cambios remotos nuevos y reescribirá el historial de confirmaciones, por lo que su historial de confirmaciones será mucho más limpio que git merge. Rebase es una operación destructiva. Eso significa que, si no lo aplica correctamente, podría perder el trabajo comprometido y / o romper la consistencia de los repositorios de otros desarrolladores.

Saurin Vala
fuente