Git pull vs git fetch git rebase

Otra pregunta dijo que git pull es similar a git fetch + git merge .

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

272
28 июля '10 в 23:16 2010-07-28 23:16 establecido por michael el 28 de julio de '10 a las 23:16 2010-07-28 23:16
@ 2 respuestas

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

Entonces, supongamos que generalmente hiciste un trabajo en tu rama maestra y lo sacaste del original, que también hizo un poco de trabajo. Después de la extracción, se ve así:

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

Si se fusionó en este punto (comportamiento predeterminado para git pull), si no hay conflictos, obtendrá lo siguiente:

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

Si, por otro lado, ha reiniciado en consecuencia, recibirá lo siguiente:

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

El contenido de su árbol de trabajo debe ser el mismo en ambos casos; Usted acaba de crear otra historia que conduce a ella . Una reescritura básica sobrescribe su historia, haciendo que se vea como si moviera una nueva rama inicial del original ( R ) en lugar de a donde tomó originalmente ( H ). Nunca debe usar el método de redireccionamiento si alguien más lo extrajo de su sucursal principal.

Finalmente, observe que puede configurar git pull para que una rama determinada use rebase en lugar de fusionar configurando la branch.<name>.rebase parámetro de configuración en verdadero. También puede hacer esto con un solo clic, usando git pull --rebase .

316
28 июля '10 в 23:23 2010-07-28 23:23 Respuesta dada por Cascabel 28 de julio, '10 a las 23:23 2010-07-28 23:23

TL; DR:

git pull es como correr, get fetch luego git merge
git pull --rebase esto como git fetch luego git rebase

En respuesta a tu primera expresión,

git pull es como git fetch + git merge .

"En el modo predeterminado, git pull es una abreviatura de git fetch seguida de git merge FETCH_HEAD" Más precisamente, git pull inicia git fetch con los parámetros dados y luego llama a git merge para fusionar los cabezales encontrados en la rama actual "

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


Para su segunda declaración / pregunta:

border=0

"Pero ¿cuál es la diferencia entre git pull git fetch + git rebase "

De nuevo de la misma fuente:
git pull --rebase

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


Ahora si quisieras preguntar

"diferencia entre merge y rebase "

Aquí también respondieron:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(la diferencia entre cambiar la forma en que se graban las versiones y lo que no)

0
12 июня '17 в 7:52 2017-06-12 07:52 la respuesta se da harshvchawla 12 de junio de 17 a 7:52 2017-06-12 07:52