¿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.