¿Cómo mostrar el historial de registro de git para un subdirectorio de un repositorio de git?


228

Digamos que tengo un repositorio git que se ve así.

foo/
  .git/
  A/
   ... big tree here
  B/
   ... big tree here

¿Hay alguna manera de pedirle a git log que muestre solo los mensajes de registro para un directorio específico? Por ejemplo, quiero ver qué confirma los archivos tocados solo en foo / A.

Respuestas:


242

Desde el directorio foo/, use

  git log -- A

Necesita el '-' para separarse <path>..de las <since>..<until>especificaciones.

# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit

# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit

1
por cierto, deberías quedarte en el pliegue "foo" antes de hacer "git log - A B"
— Sergey Leyko

22
Para las personas que leen rápidamente, esto muestra cambios A y B , no solo Acomo lo solicitó OP
— aidan el

1
@GoZoner, ¿hay alguna manera de encontrar todas las confirmaciones donde se cambió un nombre de carpeta específico? la carpeta podría haberse movido, por lo que preferiría no tener que buscar cómo y dónde se movió la carpeta ..
— alpha_989

3
^^ Actualizado para mostrar los cambios Asolo, según lo solicitado por OP.
— GoZoner

¿Qué pasa si el directorio se eliminó en el encabezado actual?
— Aaron Franke

34

si quieres verlo gráficamente puedes usar

gitk -- foo/A

ingrese la descripción de la imagen aquí


26

Puede usar git logcon las rutas de las carpetas respectivas:

git log A B

El registro solo mostrará las confirmaciones realizadas en Ay B. Por lo general, utilizo --statpara hacer las cosas un poco más bonitas, lo que ayuda a realizar revisiones rápidas.


26

Entrar

git log .

desde el directorio específico, también da confirmaciones en ese directorio.


44
No funcionó para mí ... Después de aterrizar en un directorio específico y dar el registro git. me dio todos los commits desde la raíz.
— AKS

1
Funciona para mi. Usando git bash
— buckley

2

Para seguir los cambios en una carpeta donde se movió la carpeta, comencé a usar:

git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"

Esto no es perfecto, ya que tomará otras carpetas con el mismo nombre, pero si es único, entonces parece funcionar.


0

Las otras respuestas solo muestran los archivos modificados.

git log -p DIRes muy útil si necesita la diferencia completa de todos los archivos modificados en un subdirectorio específico.

Ejemplo: Mostrar todos los cambios detallados en un rango de versión específico

git log -p 8a5fb..HEAD -- A B

commit 62ad8c5d
Author: Scott Tiger
Date:   Mon Nov 27 14:25:29 2017 +0100

    My comment

...
@@ -216,6 +216,10 @@ public class MyClass {

+  Added
-  Deleted

1
No entiendo cómo esta respuesta se relaciona con la pregunta
— Florian Leitgeb
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.