Diferencia entre git pull y git pull --rebase

Comencé a usar git hace algún tiempo y no entiendo completamente las sutilezas. Mi pregunta principal aquí es decir la diferencia entre git pull y git pull --rebase , porque agregar la opción --rebase no --rebase como algo completamente diferente: simplemente hace pull.

Por favor ayúdame a entender la diferencia.

202
21 сент. establecido por Rndm 21 de septiembre 2013-09-21 11:24 '13 a las 11:24 2013-09-21 11:24
@ 5 respuestas

git pull = git fetch + git merge contra el seguimiento de una rama hacia arriba.

git pull --rebase = git fetch + git rebase contra el seguimiento de sucursales en sentido ascendente

Si quieres saber cómo git merge y git rebase , lee esto .

225
21 сент. La respuesta se da mvp 21 sep. 2013-09-21 11:28 '13 a las 11:28 2013-09-21 11:28

A veces tenemos un flujo ascendente que colapsa / rebobina la rama en la que dependemos. Esto puede ser un gran problema, causándonos conflictos promiscuos si nos estamos quedando atrás.

git pull --rebase

En términos generales, el uso normal de git pull, en términos generales, es algo así (usaremos una fuente con nombre remoto y una rama llamada foo en todos estos ejemplos):

 # assume current checked out branch is "foo" git fetch origin git merge origin/foo 

A primera vista, puedes pensar que git pull -rebase hace exactamente eso:

 git fetch origin git rebase origin/foo 

Pero esto no ayuda si la patada ascendente incluye algún "aplastamiento" (lo que significa que los identificadores de parches de los compromisos cambiaron, y no solo su orden).

Esto significa que git pull --rebase debería hacer un poco más. Aquí hay una explicación de lo que hace y cómo.

Digamos tu punto de partida:

 a---b---c---d---e (origin/foo) (also your local "foo") 

El tiempo pasa y haces algunas confirmaciones sobre tu propio "foo":

 a---b---c---d---e---p---q---r (foo) 

Mientras tanto, en un ataque de ira antisocial, un flujo ascendente de apoyo no solo agravó su "foo", sino que incluso utilizó una calabaza o dos. Su cadena de compromiso ahora se ve así:

 a---b+c---d+e---f (origin/foo) 

Un tirón de git en este punto llevará al caos. Incluso git ir a buscar; git rebase origin / foo no lo cortará, porque las comillas "b" y "c" por un lado, y la fijación "b + c" por el otro, entrarán en conflicto. (Y de manera similar d, e y d + e).

Lo que hace git pull --rebase en este caso:

 git fetch origin git rebase --onto origin/foo e foo 

Te da:

  a---b+c---d+e---f---p'---q'---r' (foo) 
border=0

Puede tener conflictos, pero serán conflictos genuinos (entre p / q / r y a / b + c / d + e / f), en lugar de conflictos causados ​​por b / c, en conflicto con b + c, y otros.

Respuesta de (y ligeramente modificada):
http://gitolite.com/git-pull--rebase

181
21 сент. La respuesta la da Mauri López el 21 de septiembre. 2013-09-21 11:32 13 a las 11:32 2013-09-21 11:32

Supongamos que tiene dos confirmaciones en la sucursal local:

  D---E master / A---B---C---F origin/master 

Después de "git pull" será:

  D--------E / \ A---B---C---F----G master, origin/master 

Después de "git pull --rebase" no habrá ningún punto de fusión G. Tenga en cuenta que D y E se vuelven diferentes:

 A---B---C---F---D'---E' master, origin/master 
27
01 июля '16 в 10:46 2016-07-01 10:46 La respuesta se da Deqing 01 de julio de 2016 a las 10:46 2016-07-01 10:46

En el caso más simple, no hay colisiones.

  • con rebase: restaura las transacciones locales en el HEAD remoto y no crea una confirmación de combinación / fusión
  • no / normal: fusionar y crear fusionar fusionar

Ver tambien

man git-pull

Más específicamente, git extrae una búsqueda de git con los parámetros dados y llama a git merge para combinar las ramas recibidas de la rama en la rama actual. El uso de --rebase ejecuta git rebase en lugar de git merge.

Ver tambien
¿Cuándo debe usarse git pull --rebase?
http://git-scm.com/book/en/Git-Branching-Rebasing

8
21 сент. la respuesta se da drahnr 21 sep . 2013-09-21 11:28 '13 a las 11:28 2013-09-21 11:28

Para esto, es importante entender la diferencia entre Fusionar y Rebase.

Las nuevas tendencias son cómo los cambios deberían fluir desde la parte superior de la jerarquía hacia abajo y fusionarse, así es como vuelven a subir

Para obtener más detalles, consulte http://www.derekgourlay.com/archives/428 .

5
21 янв. La respuesta la da Sagar Mody el 21 de enero. 2015-01-21 12:27 '15 a las 12:27 2015-01-21 12:27

Otras preguntas sobre etiquetas de o hacer una pregunta