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
?
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
?
Respuestas:
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 a git fetch && git merge
. Si en algún momento ejecutó la recuperación sin el --dry-run
, entonces ya ha obtenido las cosas localmente.
git remote show origin
Resultado:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
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:En la rama DEV
Su rama está detrás de 'origin / DEV' por 7 confirmaciones y se puede reenviar rápidamente.
(use "git pull" para actualizar su sucursal local)
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.
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.
git remote update ; git status -uno
hizo el truco! No git fetch --dry-run
dio salida cuando lo esperaba (y git 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.
¡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 ver git 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/2711378
Deberá emitir dos comandos:
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í.
Esto es imposible sin usar git fetch
o git pull
. ¿Cómo puede saber si el repositorio está "actualizado" sin tener que ir al repositorio remoto para ver qué significa "actualizado"?
git pull
, que el OP prohíbe explícitamente en su pregunta.
git status -uno
esto funciona y también se puede usar git 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