2010-04-22 25 views
110

En respuesta a a question about pulling one commit at a time from a git repository, me recomendaron usar git remote update en lugar de git fetch. He leído las dos páginas de man, pero no puedo decir que entendí en su totalidad.¿Cuál es la diferencia entre `git fetch origin` y` git remote update origin`?

¿Alguien puede explicarme cómo git fetch origin y get remote update origin se comportan de manera diferente?

+3

posible duplicado de [Diferencias entre la actualización remota de git y fetch?] (Http://stackoverflow.com/questions/1856499/differences-between-git-remote-update-and-fetch) –

Respuesta

128

No hace ninguna diferencia cuando se usa así.

remote update es un comando muy alto nivel - que es compatible con los mandos a distancia agrupados (remotes.<group> = <list>), y la actualización de todos los mandos a distancia (excepto aquellos con remote.<name>.skipDefaultUpdate conjunto), pero no cualquiera de las opciones más específicas de obtención de información. Debajo del capó, sin embargo, hace exactamente lo mismo que buscar con las opciones predeterminadas.

La respuesta que recomendaba remote update en lugar de git fetch en realidad la recomendaba sin un nombre remoto, solo por el hecho de obtener todo, no solo el nombre como argumento. Esto es equivalente a git fetch --all.

debo añadir la advertencia de que traiga y actualización remota en realidad no utilizar el mismo código base hasta v1.6.6.1 (publicado 23 de diciembre de 2009). Incluso antes de eso, sin embargo, hicieron esencialmente lo mismo, simplemente usando código diferente (posiblemente comportándose de manera ligeramente diferente en los casos de esquina, pero no puedo pensar en ninguno de los más comunes).

+0

Muy interesante. +1. Si miras las notas de la versión de Git (que he compilado aquí: http://pastebin.com/LNhRhQS3), parece que solo el 1.7.0 (justo después de 1.6.6.2) permite "' git fetch --all' "para ser utilizado en lugar de" 'git remote update'". – VonC

+0

Ah, en realidad no verifiqué cuando 'fetch --all' entró. Hago todo esto solo por variaciones de' git log --grep = ... 'y' git describe --contains' en mi git. git clone. – Cascabel

+0

Hm, bueno, eso es raro - cometer 9c4a036b es "Enseñar a --toda la opción a 'git fetch'", y git describe --contiene da 'v1.6.6.1 ~ 1^2 ~ 9'. (La misma versión que el cambio de actualización remota que mencioné en mi respuesta, actualizada para agregar la versión de lanzamiento menor allí). Tal vez fue solo tarde para entrar en las notas de la versión? – Cascabel

Cuestiones relacionadas