Git: Mira mi último compromiso


390

Solo quiero ver los archivos que se confirmaron en la última confirmación exactamente como vi la lista cuando lo hice git commit. Desafortunadamente buscando

git "last commit" log

en Google no me lleva a ninguna parte. Y

git diff HEAD^..HEAD

No es lo que necesito, por supuesto, ya que arroja las entrañas del cambio también.


35
Gracias, en realidad solo necesitaba git diff HEAD^..HEAD!
Ameen

Respuestas:


376

Según lo determinado a través de comentarios, parece que el OP está buscando

$ git log --name-status HEAD^..HEAD

Esto también está muy cerca del resultado que obtendría svn statuso svn log -v, con el que muchas personas que vienen de subversion a git están familiarizadas.

--name-statuses la clave aquí; según lo observado por otras personas en esta pregunta, se puede utilizar git log -1, git showy git diffpara obtener el mismo tipo de salida. Personalmente, tiendo a usar git show <rev>cuando veo revisiones individuales.


Lo admito, los comentarios no son la mejor manera para aclarar mi pregunta :) gracias MikeSep
Dan Rosenstark

44
Creo que esto da EL último compromiso, ¿no? Por lo tanto, para mi último que haríagit log --stat --author nroose -n 1
nroose

1
Y se puede abreviar y acortar con git show --name-status --oneline
jasonleonhard

Eso es tan obvio! Debería haber adivinado que es algo tan simple ya que este es el tipo de consulta que ocurre todo el tiempo.
Scott Biggs

1
En el caso de usar la fuerza, presione este comando y le mostrará el último parche en lugar del último compromiso (en el tiempo) ... podría ser complicado en algunos casos de uso
Olix

208

Use git show :

git show --summary

Esto mostrará los nombres de los archivos creados o eliminados, pero no los nombres de los archivos modificados . El git showcomando admite una amplia variedad de formatos de salida que muestran diversos tipos de información sobre confirmaciones.


1
@jamessan git show --statestá cerca, pero ¿no hay una vista en la que aparezca la palabra 'modificado' o 'agregado' al lado del archivo?
Dan Rosenstark

3
Si solo desea los nombres de los archivos (incluso menos que --stat), es posible que también desee ver --name-statusy --name-onlycambiar.
Mike Seplowitz

1
@ MikeSep, eso es realmente lo que necesitaba. Si responde, marcaré la mejor respuesta, ya que para mí lo fue. Estoy usandogit log --name-status HEAD^..HEAD
Dan Rosenstark

Esta es, con mucho, la solución más simple de las ofrecidas.
Matthew


44

Para ver el último compromiso

git log -1

Para ver los últimos 2 commit

git log -2

etc ....


1
Pero la pregunta decía "... quiero ver los archivos que se confirmaron en la última confirmación" .
Peter Mortensen

42

Con mucho, el comando más simple para esto es:

git show --name-only

Como enumera solo los archivos en la última confirmación y no le da las agallas completas

Un ejemplo de la salida es:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       

77
Considere en --name-statuslugar de --name-only.
Acumenus

55
Ahí está el problema ... ¡el imperio está usando php para la cuadrícula de defensa!
ptim

3
¡El mejor ejemplo que he visto en stackoverflow! "Esos no son los compromisos que estás buscando".
Scott Biggs


21

Para ver los últimos cambios de confirmación

git show HEAD

O para ver el penúltimo cambio de confirmación

git show HEAD~1

Y para más adelante, simplemente reemplace '1' arriba con el número de secuencia de confirmación requerido.


15

Después de hacer varias confirmaciones o clonar / extraer un repositorio, es posible que desee ver qué confirmaciones se han realizado. Simplemente revise estas soluciones simples para ver su historial de confirmación (desde la última / reciente confirmación hasta la primera).

Para la última confirmación, solo use este comando: git log -1. Para cosas más interesantes, ver a continuación:

  1. Para ver la ID de confirmación (suma de verificación SHA-1), el nombre del autor <ID de correo>, la fecha junto con la hora y el mensaje de confirmación:

    git log
    
  2. Para ver algunas estadísticas más, como los nombres de todos los archivos cambiados durante esa confirmación y el número de inserciones / eliminaciones. Esto resulta muy útil al revisar el código:

    git log --stat
    
  3. Para ver historiales de confirmación en algunos formatos bonitos :) (Esto es seguido por algunas opciones de preconstrucción):

    • Si tiene demasiados commits para revisar, este comando los mostrará en una sola línea ordenada:

      git log --pretty=oneline
      
    • Para ver detalles breves, medianos, completos o incluso más de su confirmación, use el siguiente, respectivamente:

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Incluso puede usar su propio formato de salida utilizando la formatopción:

    git log --pretty=format:"%an, %ae - %s"
    

    donde% an - nombre del autor,% ae - correo electrónico del autor,% s - asunto del compromiso, etc.

Esto puede ayudarlo con sus historiales de compromiso. Para más información, haga clic aquí .


11
$ git diff --name-only HEAD ^ .. HEAD

o

$ git log --name-only HEAD ^ .. HEAD

Eso es lo que necesito bastante. ¿Qué tal algo que dice si fue modificado, agregado o eliminado? Tal vez con una letra, estilo svn?
Dan Rosenstark

1
Ya lo pillo. git log --name-status HEAD^..HEAD
Dan Rosenstark

2
En lugar de git log ... HEAD^..HEAD, ¿no es más fácil de usar git log ... -1 HEADo mejor git show ... HEAD?
Jakub Narębski

Después de navegar por un par de publicaciones de Stackoverflow, esta es la respuesta que necesito. Solo quería los archivos y nada más. Sin resumen de confirmación, solo los archivos de la última confirmación. ¡GRACIAS!
luckytaxi

6

git diff --stat HEAD

Esto muestra el mismo diffstat que su última confirmación.


4

Otra forma de enumerar solo los archivos es usar:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
o puede usar dos ID de confirmación


ventajas de esto para log?
Dan Rosenstark

Básicamente es una forma diferente de enumerar los archivos. Por lo general, combino esto con rsync para la implementación
Ismail Cherri

0

Si está hablando de encontrar la última y mejor confirmación después de haber realizado una comprobación git de alguna confirmación anterior ( y se olvidó de escribir el hash de HEAD antes de ejecutar la comprobación ), la mayoría de lo anterior no lo llevará de regreso a donde tú empezaste. git log: [algunos #] solo muestra el registro desde la posición ACTUAL de HEAD , que no es necesariamente la última confirmación (estado del proyecto). El proceso de pago desconectará el HEAD y lo señalará a lo que haya extraído.

Puede ver todo el registro de git hasta llegar a la entrada que hace referencia al clon original. Por cierto, esto tampoco funcionará si se realizaron confirmaciones entre el momento en que clonó el proyecto y cuando realizó un pago. De lo contrario, puede esperar que todas sus confirmaciones en su máquina local estén en el servidor y luego vuelva a clonar todo el proyecto.

Espero que esto ayude.


Gracias, es un buen punto, pero la pregunta original era mucho más simple y ya respondía bien muchas veces.
Dan Rosenstark
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.