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?
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
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.
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.
Respuestas:
git pull
ygit rebase
no son intercambiables, pero están estrechamente conectados.git pull
obtiene 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. Entoncesgit pull
es similar agit 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 .
fuente
Básicamente, está tirando de una rama remota a su local, ejemplo:
Llevará la rama maestra a su repositorio local
Este pone sus cambios locales encima de los cambios realizados de forma remota por otros usuarios. Por ejemplo:
SOME-FEATURE
Ahora desea ver sus cambios y los suyos en su sucursal local. Entonces, realiza la
master
rama de pago :entonces puedes tirar:
y luego vas a tu sucursal:
y puede hacer una reorganización
master
para obtener los últimos cambios y poner sus confirmaciones de rama en la parte superior:Espero que ahora te quede un poco más claro.
fuente
git fetch
entoncesgit rebase origin/master
.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.
fuente