2012-01-09 11 views
15

¿Cómo puedo obtener una lista de todos los comandos push desde o hacia un control remoto particular en git?Obtener una lista de todos los empujes con Git

En mi caso, podría ejecutar el repositorio remoto o local.

de puntos de bonificación, ¿cómo puedo obtener una lista de todos exitosaspush comandos?

Respuesta

15

Este método sólo le dará los empujes de éxito, pero todavía puede ser útil para usted:

Cuando se presiona a una sucursal en un mando a distancia que se corresponde con una de sus ramas de seguimiento a distancia, y que empuje es exitoso, la rama de rastreo remoto se actualizará. En el caso predeterminado en el que ha clonado desde un repositorio, esto generalmente significa que los intentos exitosos a master en el control remoto origin actualizarán la rama de seguimiento remoto origin/master. Los cambios en origin/master se registran en el reflog, para que pueda encontrar los empujes con éxito:

git reflog show origin/master 

Por ejemplo, en uno de mis repositorios, verá:

17f2303 refs/remotes/origin/[email protected]{0}: fetch origin: fast-forward 
dd7e0ac refs/remotes/origin/[email protected]{1}: fetch origin: fast-forward 
1788ffe refs/remotes/origin/[email protected]{2}: fetch origin: fast-forward 
9763bbc refs/remotes/origin/[email protected]{3}: fetch origin: fast-forward 
058d0d6 refs/remotes/origin/[email protected]{4}: fetch origin: fast-forward 
921f0f1 refs/remotes/origin/[email protected]{5}: fetch origin: fast-forward 
8483afd refs/remotes/origin/[email protected]{6}: update by push 
18d527f refs/remotes/origin/[email protected]{7}: update by push 
1a0fc4a refs/remotes/origin/[email protected]{8}: fetch origin: fast-forward 
b19afc6 refs/remotes/origin/[email protected]{9}: fetch origin: fast-forward 
9253285 refs/remotes/origin/[email protected]{10}: fetch origin: fast-forward 
dfa664f refs/remotes/origin/[email protected]{11}: fetch origin: fast-forward 
30ee7c0 refs/remotes/origin/[email protected]{12}: update by push 
ad11e76 refs/remotes/origin/[email protected]{13}: fetch origin: fast-forward 
c337975 refs/remotes/origin/[email protected]{14}: update by push 
1ff03bd refs/remotes/origin/[email protected]{15}: update by push 
7fb1c8d refs/remotes/origin/[email protected]{16}: fetch origin: fast-forward 
452c8fa refs/remotes/origin/[email protected]{17}: fetch origin: fast-forward 
6c79a16 refs/remotes/origin/[email protected]{18}: update by push 
11d9c4a refs/remotes/origin/[email protected]{19}: fetch origin: fast-forward 

Por ejemplo, A partir de esto, puedo decir que mi actualización más reciente actualizó origin/master de 18d527f a 8483afd.

Si necesita confiar en esto, deberá evitar que el reflog caduque después de la hora predeterminada (90 días IIRC).

+0

¡Perfecto! Gracias. FWIW, mi reflog muestra las entradas de los últimos 9 meses, y no he hecho nada para afectar su comportamiento desde la primera vez que lo instalé. – Clayton

+2

@Clayton: Eso probablemente solo significa que aún no has tenido el disparador 'gc --auto'; caducará los reajustes anteriores a los 90 días predeterminados. Simplemente establece 'gc.reflogExpire' en' never' (o algo más grande) si quieres que las cosas permanezcan así. – Cascabel

+0

Para estudiantes de git: para configurar el reflog para que no caduque para todos sus repos locales: 'git config --global gc.reflogExpire never' en la línea de comando. –

Cuestiones relacionadas