Confirmar historial en repositorio remoto

206

Estoy tratando de acceder al historial de confirmación de una sucursal en un repositorio remoto. Eché un vistazo al documento, pero no pude encontrar información sustancial sobre cómo acceder al historial de confirmación de un repositorio remoto utilizando mi cliente git local.

usuario1795998
fuente

Respuestas:

252
git log remotename/branchname

Mostrará el registro de una rama remota determinada en ese repositorio, pero solo los registros que haya "extraído" de su repositorio a su "copia" personal del repositorio remoto.

Recuerde que su clon del repositorio actualizará su estado de cualquier rama remota solo al hacerlo git fetch. No puede conectarse directamente al servidor para verificar el registro allí, lo que debe hacer es descargar el estado del servidor git fetchy luego ver localmente el registro de las ramas remotas.

Quizás otro comando útil podría ser:

git log HEAD..remote/branch

que le mostrará las confirmaciones que están en la rama remota, pero no en su rama actual ( HEAD).

LopSae
fuente
8
"No se puede conectar directamente al servidor para verificar el registro allí" - ese era el problema que tenía
Brian J
1
Solo estoy obteniendo cambios locales extraídos ... tenga en cuenta los remotos, incluso antes de buscar.
Loenix
66
Al hacer un git fetchdebe usar --allpara buscar desde controles remotos.
ocodo
25
Eso es una lástima, así que tengo que clonar objetos con un valor de 2GB solo para mirar a través de los registros de confirmación.
TWiStErRob
2
Hola @TWiStErRob, puede mitigar el dolor administrando la cantidad de datos recuperados con un clon superficial (vea - profundidad en git-scm.com/docs/git-clone ), luego maneje las recuperaciones con (vea "superficial" en git-scm .com / docs / git-fetch ).
qneill
66

NÓTESE BIEN. "origen" a continuación se utiliza para representar el flujo ascendente de un repositorio clonado, reemplace "origen" con un nombre descriptivo para el repositorio remoto. "referencia remota" puede usar el mismo formato usado en el comando clonar.

git remote add origin <remote reference>
git fetch
git log origin/master
Michael Hasan
fuente
2
@ user1795998 El repositorio remoto Git URL, por ejemplogit://git.somedomain.tld/some/repo
gertvdijk
1
¿No necesita especificar <refspec>al buscar (o usar fetch --all) si no está rastreando ninguna rama en el control remoto?
gertvdijk
1
¿Qué quieres decir con "vendedor de proyectos / diag"? ¿Es esa una carpeta dentro del repositorio? Otra rama?
LopSae
1
Un repositorio puede tener múltiples ramas, pero "proyecto" no es un término relacionado con git, de ahí la confusión de lo que significa "proyecto" en este caso. Aún así, ¿qué tendría eso que ver con la pregunta?
LopSae
1
No creo que sea posible hacer esto en GIT. Debe clonar ese repositorio remoto antes de poder emitir un registro git en su contra.
user959690
12

Solo puede ver el registro en un repositorio local, sin embargo, eso puede incluir las ramas recuperadas de todos los controles remotos que ha configurado.

Entonces, si clonas un repositorio ...

git clone git@gitserver:folder/repo.git

Esto se establecerá por defecto en origin/master.

Puede agregar un control remoto a este repositorio, además de originagregar production. Desde dentro de la carpeta de clonación local:

git remote add production git@production-server:folder/repo.git

Si alguna vez queremos ver el registro de production, tendremos que hacer:

git fetch --all 

Esto se obtiene de TODOS los controles remotos (la recuperación predeterminada sin se --allobtendría solo de origin)

Después de ir a buscar podemos ver el registro en el productioncontrol remoto, también tendrá que especificar la rama.

git log production/master

Todas las opciones funcionarán como lo hacen con el inicio de sesión en las sucursales locales.

ocodo
fuente
12

Una forma rápida de hacer esto es clonar usando la --barepalabra clave y luego verificar el registro:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
davvs
fuente
11

No creo que esto sea posible. Creo que debe clonar ese repositorio remoto localmente y realizarlo git fetchantes de poder emitir un git logcontra.

usuario959690
fuente
1
imagina que ya clonas el repositorio en local y haces algunos cambios. . entonces quieres comprobar si alguien se ha comprometido con el repositorio remoto
Chhorn Elit
2
Si cambia esta respuesta a "No es posible", entonces esta es la mejor respuesta. No hay forma de acceder al historial de confirmación de un repositorio remoto utilizando un cliente git remoto.
qneill
2

No estoy seguro de cuándo se agregó el filtrado, pero es una forma de excluir los blobs de objetos si solo desea obtener el historial / registros de referencia:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
vapor25
fuente
Esto es perfecto . Dadas las otras respuestas, sería increíble si esto pudiera destacarse junto a la respuesta proporcionada.
Eric Cousineau
0

Puede obtener fácilmente el registro del servidor remoto. Así es cómo:

(1) Si usa git a través de ssh, simplemente inicie sesión en el servidor remoto con su nombre de usuario y contraseña de git, y chdir la carpeta remota donde existe su repositorio, y ejecute el comando "git log" dentro de su repositorio en el servidor remoto.

(2) Si usa git a través del protocolo de inicio de sesión estándar de Unix, simplemente telnet a su servidor remoto y haga un registro de git allí.

Espero que esto ayude.

Naligator
fuente
13
Para reformular, "no puede obtener un registro de un servidor remoto, debe iniciar sesión y obtener el registro utilizando un cliente git local"
qneill
Simplemente elimine esta respuesta, no responde la pregunta y no es cómo la mayoría de los usuarios de git no tienen acceso a la shell del servidor
nhed
0

Aquí hay una función bash que facilita la visualización de los registros en un control remoto. Se necesitan dos argumentos opcionales. El primero es la rama , por defecto es master . El segundo es el control remoto , el valor predeterminado es la puesta en escena .

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

ejemplos:

 $ git_log_remote
 $ git_log_remote development origin
Brandon Howard
fuente