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 fetcho 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 fetcho 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-runno aparece nada?
--all?
git pulles 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 -unole 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 -vcon 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 -unoresuelto. git fetch --dry-runno dio salida incluso en los casos en que el local estaba detrás del remoto.
git remote -v updatees la respuesta para mi.
puede usar git status -unopara verificar si su sucursal local está actualizada con la de origen.
git remote update ; git status -unohizo el truco! No git fetch --dry-rundio salida cuando lo esperaba (y git pullsacaría cosas).
La verdad es que no, pero no veo cómo git fetchperjudicarí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/branchpara usarla como una comparación que podría ver git show-branch *branchpara 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 mergeogit 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 fetcho 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 -unoesto funciona y también se puede usar git show-branch *masterpara 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 statussolo 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