¿Cómo ver el historial de archivos en Git?

133

Con Subversion podría usar TortoiseSVN para ver el historial / registro de un archivo.

¿Cómo puedo hacer esto con Git?

Simplemente buscando el registro del historial de un archivo en particular, y luego la capacidad de comparar las diferentes versiones.

mrblah
fuente

Respuestas:

156

Use git logpara ver el historial de confirmaciones. Cada confirmación tiene un especificador de revisión asociado que es una clave hash (por ejemplo, 14b8d0982044b0c49f7a855e396206ee65c0e787y b410ad4619d296f9d37f0db3d0ff5b9066838b39). Para ver la diferencia entre dos confirmaciones diferentes, use git diffcon los primeros caracteres de los especificadores de revisión de ambas confirmaciones, así:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Si desea obtener una descripción general de todas las diferencias que se produjeron de commit a commit, use git logo git whatchangedcon la opción de parche:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d
cristiano
fuente
77
Gracias por el consejo -p, es muy útil para encontrar qué revisiones implican un poco de código.
Christopher Pickslay
100

Parece que quieres git diff y / o git log . También echa un vistazo a gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
fuente
3
Aquí hay otro guiño a gitk, que proporciona una excelente manera de explorar todas las instantáneas de un solo archivo en un repositorio de git.
Ray Brown
1
De forma predeterminada, gitk muestra las diferencias más 10 líneas de contexto, pero ¿qué sucede si desea ver una instantánea de todo el archivo? Simplemente configure "Líneas de contexto" en un valor grande (por ejemplo, 100000). Luego, puede alternar entre confirmaciones y ver el archivo completo en diferentes momentos. (También puede buscar dentro del archivo.)
antinome
35

Me gusta usar gitk name_of_file

Esto muestra una buena lista de los cambios que ocurrieron en un archivo en cada confirmación, en lugar de mostrar los cambios en todos los archivos. Hace que sea más fácil rastrear algo que sucedió.

Gustavo Litovsky
fuente
30

También puede usar tig para un navegador de repositorio git agradable basado en ncurses. Para ver el historial de un archivo:

tig path/to/file
usuario217433
fuente
29

Mi favorito es git log -p <filename>, que le dará un historial de todas las confirmaciones del archivo dado, así como las diferencias para cada confirmación.

helicóptero
fuente
11

Muchos navegadores de historial de Git, incluidos git log(y 'git log --graph'), gitk (en Tcl / Tk, parte de Git), QGit (en Qt), tig (interfaz de modo de texto para git, usando ncurses), Giggle (en GTK +), TortoiseGit y git-cheetah admiten la limitación de ruta (p gitk path/to/file. Ej .).

Jakub Narębski
fuente
@ RobertVuković Sé que esta es una vieja pregunta ... ¡pero mira mi respuesta a continuación!
brianc
4

Por supuesto, si quieres algo lo más cercano a TortoiseSVN como sea posible, puedes usar TortoiseGit .

Jörg W Mittag
fuente
Excepto que las extensiones de shell TortoiseSvn contienen un comando para mostrar el historial de un solo archivo, mientras que TortoiseGit no.
Neutrino
3

git log --all -- path/to/file Deberia trabajar

Edson Medina
fuente
No hay ningún enlace en mi respuesta @ineersa
Edson Medina
1
Esta debería ser la mejor respuesta. No me gusta usar herramientas de interfaz de
usuario de
2

TortoiseGit también proporciona una herramienta de línea de comandos para ver el historial de un archivo. Usando PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
fuente