Me gustaría saber si mi repositorio local está actualizado (y si no, idealmente, me gustaría ver los cambios).
¿Cómo podría comprobar esto sin hacer git fetch
o git pull
?
Prueba git fetch --dry-run
El manual ( git help fetch
) dice:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
no aparece nada?--all
?git pull
es aproximadamente equivalente a agit fetch && git merge
. Si en algún momento ejecutó la recuperación sin el--dry-run
, entonces ya ha obtenido las cosas localmente.Resultado:
fuente
Primer uso
git remote update
, para actualizar sus referencias remotas. Entonces puede hacer una de varias cosas, como:git status -uno
le dirá si la rama que está siguiendo está adelante, atrás o se ha desviado. Si no dice nada, el local y el remoto son lo mismo. Resultado de la muestra:git show-branch *master
le mostrará las confirmaciones en todas las ramas cuyos nombres terminan en 'maestro' (por ejemplo, maestro y origen / maestro).Si usa
-v
con git remote update (git remote -v update
), puede ver qué ramas se actualizaron, por lo que realmente no necesita más comandos.fuente
git remote update ; git status -uno
resuelto.git fetch --dry-run
no dio salida incluso en los casos en que el local estaba detrás del remoto.git remote -v update
es la respuesta para mi.puede usar
git status -uno
para verificar si su sucursal local está actualizada con la de origen.fuente
git remote update ; git status -uno
hizo el truco! Nogit fetch --dry-run
dio salida cuando lo esperaba (ygit pull
sacaría cosas).La verdad es que no, pero no veo cómo
git fetch
perjudicaría, ya que no cambiará ninguna de sus sucursales locales.fuente
¡Otra alternativa es ver el estado de la rama remota usando
git show-branch remote/branch
para usarla como una comparación que podría vergit show-branch *branch
para ver la rama en todos los controles remotos, así como en su repositorio! consulte esta respuesta para obtener más https://stackoverflow.com/a/3278427/2711378fuente
Deberá emitir dos comandos:
fuente
Debes correr
git fetch
antes de poder comparar su repositorio local con los archivos de su servidor remoto.Este comando solo actualiza sus ramas de seguimiento remoto y no afectará su árbol de trabajo hasta que llame
git merge
ogit pull
.Para ver la diferencia entre su sucursal local y su sucursal de seguimiento remoto una vez que haya obtenido, puede usar git diff o git cherry como se explica aquí.
fuente
Si utiliza
recibirá comentarios sobre si está actualizado. Entonces, básicamente, solo necesita agregar la opción "verbosa" a la respuesta dada anteriormente.
fuente
Esto es imposible sin usar
git fetch
ogit pull
. ¿Cómo puede saber si el repositorio está "actualizado" sin tener que ir al repositorio remoto para ver qué significa "actualizado"?fuente
git pull
, que el OP prohíbe explícitamente en su pregunta.git status -uno
esto funciona y también se puede usargit show-branch *master
para ver el estado de todas las ramas maestras. ¿Sigues diciendo que es imposible? ¡Puede ver el estado de cualquier sucursal siempre que tenga acceso al control remoto!git status
solo le dice el estado de sus referencias locales, no le dice si sus referencias locales están al día con las referencias remotas. Nuevamente: es simplemente lógicamente imposible saber cuál es el estado del repositorio remoto sin obtener el estado del repositorio remoto. Período. Estas son solo las leyes básicas del espacio-tiempo.Traté de formatear mi respuesta, pero no pude. Por favor, apile el equipo de overflow, por qué publicar la respuesta es tan difícil.
sin embargo,
respuesta:
git fetch origin
git status (verá un resultado como "Su rama está detrás de 'origin / master' por 9 confirmaciones")
para actualizar a cambios remotos: git pull
fuente