2010-02-17 11 views
12

No puedo entender cómo ver exactamente qué se cambió, en el repositorio remoto, mediante un 'push'. 'git log' me muestra la serie de commits, pero esos tuvieron lugar en mi repositorio local y fueron enviados en diferentes momentos; Me gustaría saber qué confirmaciones formaban parte de cada 'push' específicogit: cómo ver los cambios debido al empuje?

Respuesta

14

En realidad, puede pescar esta información fuera del reflog. No es el historial completo del repositorio remoto sino el historial de su copia de la rama del repositorio remoto. Por lo tanto, no verá los cambios realizados por otras personas en el repositorio remoto. No es bonito, pero probablemente puedas escribir un guión para hacerlo más fácil.

Por ejemplo:

$ git reflog show origin/master 
ca4f119 refs/remotes/origin/[email protected]{0}: pull --rebase: fast-forward 
d303ece refs/remotes/origin/[email protected]{1}: pull --rebase: fast-forward 
ce28c26 refs/remotes/origin/[email protected]{2}: pull --rebase: fast-forward 
0f71883 refs/remotes/origin/[email protected]{3}: pull --rebase: fast-forward 
8c2f0dd refs/remotes/origin/[email protected]{4}: pull --rebase: fast forward 
2958d6c refs/remotes/origin/[email protected]{5}: update by push 
6e9558c refs/remotes/origin/[email protected]{6}: pull --rebase: fast-forward 
8854b35 refs/remotes/origin/[email protected]{7}: pull --rebase: fast-forward 
b96f25d refs/remotes/origin/[email protected]{8}: pull --rebase: fast-forward 
efb0ab8 refs/remotes/origin/[email protected]{9}: pull --rebase: fast-forward 
71c12ca refs/remotes/origin/[email protected]{10}: pull --rebase: fast-forward 
d860e59 refs/remotes/origin/[email protected]{11}: update by push 
6342dbb refs/remotes/origin/[email protected]{12}: fetch: fast-forward 
... 

Puede ver aquí que mi más reciente empuje avanzó origin/master de 6e9558c a 2958d6c. Para ver las confirmaciones, puede usar git log 6e9558c..2958d6c. Por ejemplo,

$ git log --abbrev-commit --pretty=oneline 6e9558c..2958d6c 
2958d6c Commit Summary 4 
5cbe548 Commit Summary 3 
13d007c Commit Summary 2 
4f19ac3 Commit Summary 1 

Si usted tiene acceso a la terminal al repositorio remoto, se puede hacer algo similar en ese extremo para ver todos los empujones que recibía.

+2

¿Es posible obtener el registro con marcas de tiempo? – user

+0

'git reflog --date = iso' credits: https://stackoverflow.com/a/17369548/2234009 –

3

Git no realiza un seguimiento de los commits que formaban parte de la operación "push"; el repositorio contiene una cierta secuencia de confirmaciones, o no. A Git no le importa cómo llegaron las confirmaciones, si un grupo de tres confirmaciones formaba parte de un solo empuje, o cada una de ellas se realizó en un empuje separado.

+1

Eso no es cierto, el reflog recordará todos los cambios en cada sugerencia de bifurcación. Un empujón de múltiples commits se mostrará como un cambio único en el reflog. Ver mi respuesta a continuación. –

+0

Eso es cierto, pero el reflog no es realmente parte del repositorio. En particular, no puede ver un reflog remoto sin acceso directo al repositorio (por ejemplo, no puede ver un reflog para un repositorio en Github). –

+0

Es cierto, pero Github expone algo similar a través de su API: https://objectpartners.com/2014/02/11/recovering-a-commit-from-githubs-reflog/ –

Cuestiones relacionadas