¿Está buscando cambios en un archivo en una sola rama? en todas las sucursales locales; en todas las ramas en un solo control remoto; o a través de todo? Creo que a través de todo esto requerirá un guión.
benhorgen
Respuestas:
1083
Los --followtrabajos para un archivo en 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 realizar un seguimiento, por ejemplo, de los cambios en un directorio , pero se tambalea cuando se cambia el nombre de los archivos (por lo tanto, use --follow filename).
+1 --followrepresenta los cambios de nombre, por lo que esto es más robusto quegit log -- path
Gabe Moothart
42
Tenga en cuenta que --followacepta una ruta , que puede ser un archivo pero también un directorio. En el caso de este último, se ejecutará recursivamente e informará los cambios a todos los archivos por debajo de ese punto. (Este comportamiento no está documentado en la página de manual y puede no ser permanente.)
StvnW
55
¿Cuál es la diferencia entre ese y sologit log filename?
VaTo
8
@SaulOrtega, git log filenameno sigue el cambio de nombre del archivo, es decir, mostrará todas las confirmaciones con respecto a ese nombre de archivo (no archivo real). Si crea archivos Xy Y, cambiado tanto, y luego borrado Yy renombrado Xa Yy luego también cambió, y se ejecuta git log Y, obtendrá mensajes para ambos viejaY y la nueva uno. Y al contrario, con --followusted obtendrá confirmaciones con respecto a ese archivo cuando fue nombrado Xy cuando fue nombrado Y.
MarSoft
77
use "git log --all filename" para ver todos los commits en todas las ramas
Lebnik
122
git log pathDebes hacer lo que quieras. Del git loghombre :
[--] <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.
No funciona si la ruta del archivo ha cambiado. La respuesta de Jackrabbit funciona para este caso.
kwahn
1
Esto funciona si necesita restringir el registro a una rama específica
enms.
64
He estado analizando esto de cerca y todas estas respuestas no parecen realmente mostrarme 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 para un archivo, independientemente de la rama, local, reflog y remoto.
Esto es perfecto para cuando alguien hace cambios pero se olvidan de dónde cometieron los cambios.
earthmeLon
2
Muy útil. Incluye también confirmaciones de escondite
Juan Antonio Tubío
Esta debería ser la respuesta preferida. La pregunta era encontrar todos los commits, este lo hace.
carl verbiest
Aviso que --reflogincluye confirmaciones que fueron modificadas / modificadas o descartadas. Tal vez eso debería ser obvio, ¡pero traté de usar esto git logy estaba tratando de entender por qué estaba viendo confirmaciones aparentemente duplicadas!
Soren Bjornstad
43
Utilice el siguiente comando para obtener confirmaciones para un archivo específico:
Entiendo que esto no responde exactamente la pregunta ya que quería una lista de confirmaciones, pero esto es oro y está en mi archivo.
zkent
3
Esto no funcionará en absoluto si el archivo no existe en la rama actualmente desprotegida. Puede agregar la rama como git log -p mybranch -- filenameo simplemente usar git log --all -- filenamepara buscar en todas las ramas.
Soren Bjornstad
37
Debería ser tan simple como git log <somepath>; verifique la página de manual ( git-log(1)).
Personalmente, me gusta usar git log --stat <path>para poder ver el impacto de cada confirmación en el archivo.
O incluso -psi desea ver la diferencia completa, no solo que haya modificado algunas líneas.
Cascabel
Es cierto, pero eso es bastante ruidoso considerando que la mayoría de los archivos se han cambiado muchas veces a lo largo de sus vidas. No quiero ver diferencias completas de cada confirmación que haya tocado un archivo. Por lo general, busco algo específico, para poder obtener un registro con solo impactos y luego git showen los compromisos específicos que parecen ser importantes.
rfunduk
git log --stat --follow - * .html => lista de salida de confirmaciones con exactamente un archivo en cada confirmación. ¡Muy agradable!
Sergio Belevskij
18
Alternativamente (desde Git 1.8.4), también es posible obtener todas las confirmaciones que han cambiado una parte específica de un archivo. Puede obtener esto pasando la línea de inicio 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:
Como señaló jackrabb1t, --followes más robusto ya que continúa enumerando la historia 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 través de varias confirmaciones, --seguimiento 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 con solo lo que importa:
--followfunciona para una sola ruta , que podría ser un directorio. Si se pasa un directorio, se ejecutará recursivamente e informará los cambios a todos los archivos debajo de ese punto.
StvnW
10
Si está intentando: seguir un archivo eliminado en una confirmación anterior, use
Para los gitnovatos: use git log -p --follow -- filenamepara mostrar los cambios también. También tenga en cuenta: "nombre de archivo" puede ser un archivo, un directorio o un submódulo.
Tino
8
Si desea ver todas las confirmaciones que cambiaron un archivo, en todas las ramas, use esto:
Si desea ver todos los cambios realizados en las confirmaciones que cambiaron un archivo en particular (en lugar de solo los cambios en el archivo en sí), puede pasar --full-diff:
lo que significa que 5 commits han tocado este archivo. Es el orden cronológico inverso, por lo que la primera confirmación de la lista b7c4f0d7es la más reciente.
Se puede instalar usando "sudo apt-get install git-gui gitk". Se puede usar para ver confirmaciones de un archivo específico por "gitk <nombre de archivo>".
Respuestas:
Los
--follow
trabajos para un archivo en particularDiferencia a otras soluciones dadas
Tenga en cuenta que otras soluciones incluyen
git log path
(sin el--follow
). Ese enfoque es útil si desea realizar un seguimiento, por ejemplo, de los cambios en un directorio , pero se tambalea cuando se cambia el nombre de los archivos (por lo tanto, use--follow filename
).fuente
--follow
representa los cambios de nombre, por lo que esto es más robusto quegit log -- path
--follow
acepta una ruta , que puede ser un archivo pero también un directorio. En el caso de este último, se ejecutará recursivamente e informará los cambios a todos los archivos por debajo de ese punto. (Este comportamiento no está documentado en la página de manual y puede no ser permanente.)git log filename?
git log filename
no sigue el cambio de nombre del archivo, es decir, mostrará todas las confirmaciones con respecto a ese nombre de archivo (no archivo real). Si crea archivosX
yY
, cambiado tanto, y luego borradoY
y renombradoX
aY
y luego también cambió, y se ejecutagit log Y
, obtendrá mensajes para ambos viejaY
y la nueva uno. Y al contrario, con--follow
usted obtendrá confirmaciones con respecto a ese archivo cuando fue nombradoX
y cuando fue nombradoY
.git log path
Debes hacer lo que quieras. Delgit log
hombre :fuente
He estado analizando esto de cerca y todas estas respuestas no parecen realmente mostrarme 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 para un archivo, independientemente de la rama, local, reflog y remoto.
También funciona con
git log
:fuente
--reflog
incluye confirmaciones que fueron modificadas / modificadas o descartadas. Tal vez eso debería ser obvio, ¡pero traté de usar estogit log
y estaba tratando de entender por qué estaba viendo confirmaciones aparentemente duplicadas!Utilice el siguiente comando para obtener confirmaciones para un archivo específico:
fuente
git log -p mybranch -- filename
o simplemente usargit log --all -- filename
para buscar en todas las ramas.Debería ser tan simple como
git log <somepath>
; verifique la página de manual (git-log(1)
).Personalmente, me gusta usar
git log --stat <path>
para poder ver el impacto de cada confirmación en el archivo.fuente
-p
si desea ver la diferencia completa, no solo que haya modificado algunas líneas.git show
en los compromisos específicos que parecen ser importantes.Alternativamente (desde Git 1.8.4), también es posible obtener todas las confirmaciones que han cambiado una parte específica de un archivo. Puede obtener esto pasando la línea de inicio 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:
donde
upperLimit
está elstart_line_number
ylowerLimit
es elending_line_number
Más información: https://www.techpurohit.com/list-some-useful-git-commands
fuente
Como señaló jackrabb1t,
--follow
es más robusto ya que continúa enumerando la historia 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 través de varias confirmaciones, --seguimiento lo rastreará.Esta puede ser una mejor opción si desea visualizar los cambios de nombre / ruta:
Pero si quieres una lista más compacta con solo lo que importa:
o incluso
La desventaja es que
--follow
solo funciona para un solo archivo.fuente
--follow
funciona para una sola ruta , que podría ser un directorio. Si se pasa un directorio, se ejecutará recursivamente e informará los cambios a todos los archivos debajo de ese punto.Si está intentando: seguir un archivo eliminado en una confirmación anterior, use
fuente
git
novatos: usegit log -p --follow -- filename
para mostrar los cambios también. También tenga en cuenta: "nombre de archivo" puede ser un archivo, un directorio o un submódulo.Si desea ver todas las confirmaciones que cambiaron un archivo, en todas las ramas, use esto:
fuente
Si desea buscar todas las confirmaciones por
filename
y no porfilepath
, use:fuente
Si desea ver todos los cambios realizados en las confirmaciones que cambiaron un archivo en particular (en lugar de solo los cambios en el archivo en sí), puede pasar
--full-diff
:fuente
[branch]
Se usa
git log --all <filename>
para ver los commits que influyen<filename>
en todas las ramas.fuente
Asumiendo que el paquete "gitk" ya está instalado.
Si no está instalado, haga esto:
Y luego intente el comando anterior. Es para Linux ... Podría ayudar a los usuarios de Linux si quieren una GUI.
fuente
gitk
se incluye con Git para Windows.Para obtener una lista de los hashes de confirmación, use
git rev-list
Salida:
lo que significa que 5 commits han tocado este archivo. Es el orden cronológico inverso, por lo que la primera confirmación de la lista
b7c4f0d7
es la más reciente.fuente
En Linux puedes usar gitk para esto.
Se puede instalar usando "sudo apt-get install git-gui gitk". Se puede usar para ver confirmaciones de un archivo específico por "gitk <nombre de archivo>".
fuente
Referencia
fuente