Pregunta Listar todas las confirmaciones para un archivo específico


¿Hay alguna manera de enumerar todas las confirmaciones que cambiaron un archivo específico?


554
2017-09-13 14:37


origen


Respuestas:


los --follow funciona para un archivo particular

git log --follow -- filename

Diferencia a otras soluciones dadas

Tenga en cuenta que otras soluciones incluyen git log path (sin el --follow) Ese enfoque es útil si desea rastrear, p. cambios en una directorio, pero tropieza cuando se cambiaron los nombres de los archivos --follow filename)


766
2018-01-10 18:26



git log path debería hacer lo que quieras Desde el git log hombre:

[--] <path>…

Show only commits that affect any of the specified paths. To prevent confusion with 
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.

116
2017-09-13 14:48



Debería ser tan simple como git log <somepath>, consulte la página de manual (git-log(1))

Personalmente me gusta usar git log --stat <path> para que pueda ver el impacto de cada confirmación en el archivo.


31
2017-09-13 14:50



He estado mirando esto de cerca y todas estas respuestas no parecen mostrarme realmente todos los compromisos en todas las ramas.

Esto es lo que se me ocurrió al jugar con las opciones de vista de edición de gitk. Esto me muestra todos los commits por un archivo independientemente de la rama, local, reflog y remoto.

gitk --all --first-parent --remotes --reflog --author-date-order -- filename

30
2018-01-07 22:50



Use el siguiente comando para obtener confirmaciones para un archivo específico:

git log -p filename

30
2018-04-02 10:41



Como señaló Jackrabb1t, --follow es más robusto ya que continúa enumerando el historial más allá de los cambios de nombre / movimientos. Por lo tanto, si está buscando un archivo que actualmente no está en la misma ruta o un archivo que ha sido renombrado a lo largo de varias confirmaciones, --follow lo rastreará.

Esta puede ser una mejor opción si desea visualizar los cambios de nombre / ruta:

git log --follow --name-status -- <path>

Pero si quieres una lista más compacta solo con lo que importa:

git log --follow --name-status --format='%H' -- <path>

o incluso

git log --follow --name-only --format='%H' -- <path>

La desventaja es que --follow solo funciona para un solo archivo.


11
2017-12-19 02:12



Si estás tratando de --siga un archivo eliminado en un uso de confirmación anterior

git log --follow -- filename

8
2017-12-07 15:14



Alternativamente (desde git 1.8.4), también es posible obtener todos los commits que han cambiado un específico parte de un archivo. Puede obtener esto pasando la línea de partida y el número de línea final.

El resultado devuelto sería la lista de confirmaciones que modificaron esta parte en particular. El comando es como:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

dónde upperLimit es el start_line_number y lowerLimit es el ending_line_number


7
2017-08-13 05:39



Utilizar git log --all <filename> para ver las confirmaciones que influyen <filename> en todas las ramas


3
2017-08-13 11:22



Si desea ver todas las confirmaciones que cambiaron un archivo, en todas las ramas, use esto

git log --follow --all <filepath>

3
2017-11-15 06:43