2010-06-01 20 views
87

Si lo hace git log --patch -- path/to/file, obtendrá la historia del archivo junto con un diff de todos los cambios realizados a la misma con cada confirmación, así:¿Puede GitHub mostrar el historial de cambios realizados en un archivo en forma de parche?

$ git log --patch -- git-rebase.sh 

commit 20351bb06bf4d32ef3d1a6849d01636f6593339f 
Author: Ramkumar Ramachandra <[email protected]> 
Date: Sat Jun 15 18:43:26 2013 +0530 

    rebase: use 'git stash store' to simplify logic 

    rebase has no reason to know about the implementation of the stash. In 
    the case when applying the autostash results in conflicts, replace the 
    relevant code in finish_rebase() to simply call 'git stash store'. 

    Signed-off-by: Ramkumar Ramachandra <[email protected]> 
    Signed-off-by: Junio C Hamano <[email protected]> 

diff --git a/git-rebase.sh b/git-rebase.sh 
index d0c11a9..17be392 100755 
--- a/git-rebase.sh 
+++ b/git-rebase.sh 
@@ -153,11 +153,8 @@ finish_rebase() { 
       then 
         echo "$(gettext 'Applied autostash.')" 
       else 
-      ref_stash=refs/stash && 
-      >>"$GIT_DIR/logs/$ref_stash" && 
-      git update-ref -m "autostash" $ref_stash $stash_sha1 || 
-      die "$(eval_gettext 'Cannot store $stash_sha1')" 
- 
+      git stash store -m "autostash" -q $stash_sha1 || 
+      die "$(eval_gettext "Cannot store \$stash_sha1")" 
         gettext 'Applying autostash resulted in conflicts. 
Your changes are safe in the stash. 
You can run "git stash pop" or "git stash drop" it at any time. 

commit 2e6e276decde2a9f04fc29bce734a49d3ba8f484 
Author: Ramkumar Ramachandra <[email protected]> 
Date: Fri Jun 14 18:47:52 2013 +0530 

    rebase: use peel_committish() where appropriate 

    The revisions specified on the command-line as <onto> and <upstream> 
    arguments could be of the form :/quuxery; so, use peel_committish() to 
    resolve them. The failing tests in t/rebase and t/rebase-interactive 
    now pass. 

    Signed-off-by: Ramkumar Ramachandra <[email protected]> 
    Signed-off-by: Junio C Hamano <[email protected]> 

diff --git a/git-rebase.sh b/git-rebase.sh 
index d0c11a9..6987b9b 100755 
--- a/git-rebase.sh 
+++ b/git-rebase.sh 
@@ -434,7 +434,7 @@ then 
       shift 
       ;; 
     esac 
-  upstream=`git rev-parse --verify "${upstream_name}^0"` || 
+  upstream=$(peel_committish "${upstream_name}") || 
     die "$(eval_gettext "invalid upstream \$upstream_name")" 
     upstream_arg="$upstream_name" 
else 
@@ -470,7 +470,7 @@ case "$onto_name" in 
     fi 
     ;; 
*) 
-  onto=$(git rev-parse --verify "${onto_name}^0") || 
+  onto=$(peel_committish "$onto_name") || 
     die "$(eval_gettext "Does not point to a valid commit: \$onto_name")" 
     ;; 
esac 

Quiero ser capaz de obtener el mismo tipo del formato usando la interfaz web de GitHub (no la línea de comando), y quiero un enlace para enviar a alguien más sin el código.

+0

[Ver] Comparar (https: // github.com/blog/612-introduction-github-compare-view) le ofrece algo parecido a lo que está buscando, pero no es para un archivo individual, desafortunadamente. –

+2

Si realiza una solicitud de función, tal vez el equipo de desarrollo de GitHub lo agregará. –

Respuesta

80

El siguiente URL mostrará todas las confirmaciones para un único archivo en un formato similar a git log -p:

http://github.com/<username>/<project>/commits/<branch>/<path/to/file>

... donde:

  • <username> es el nombre de usuario de la persona que posee el repo
  • <project> es el nombre del repositorio
  • <branch> puede ser 'maestro' o cualquier otra rama
  • <path/to/file> es de esperar que explica por sí mismo

Picking en (un poco) al azar, aquí es un ejemplo de la vim-fugitive repo.

+0

+1. Más de esas API de Compromisos: http://develop.github.com/p/commits.html (en la sección API de GitHub http://develop.github.com/) – VonC

+17

Eso es la ruta de acceso/archivo/log de git. Quiero git log -p ruta/a/archivo. – ma11hew28

+1

Todo lo que hace es mostrar la última actualización, no un historial de actualizaciones. – Gerry

34

Una alternativa a la respuesta directa de URL (que por cierto es perfectamente correcta) utilizando la interfaz de GitHub es:

  • Haga clic en la vista 'Fuente'
  • cambiar a una rama deseada
  • Busca la el archivo que desea hasta que llegue a la vista del origen real para el archivo
  • Haga clic en la 'historia' en la esquina superior derecha
+12

Este *** también *** realmente no da lo que está buscando el cartel original. Él quiere una salida de parche, la misma que obtendría con 'git log -p - file'. Lo que ha mostrado es solo el registro de un archivo en particular, como 'git log-file', sin los parches de diferencias. –

46

En función de las respuestas anteriores y de mis propios intentos de encontrar esta característica exacta, parece que la respuesta correcta a esta pregunta es no.

Editar: antes de votar, tal vez intente y demuestre que estoy equivocado. Algunas veces la respuesta correcta no es lo que quieres escuchar.

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – indubitablee

+18

Esta respuesta es específica y precisa, a diferencia de las otras dos respuestas que ni siquiera reconocen lo que la pregunta estaba haciendo. – jhk

+5

Esta es la respuesta correcta. Github no tiene una forma de mostrar los resultados del parche junto con los registros de un solo archivo de la misma manera que el archivo git log -p - – nohat

-3

Si estás en Linux, a continuación, instalar TIG como:

sudo apt-get install TIG

y luego,

ruta TIG/a/archivo/

Itll s ¿Cómo están todos los confirmaciones y sus respectivos cambios

Talat Parwez

Cuestiones relacionadas