tipos - Git: ¿muestra el historial de un archivo?
git ver commits pendientes (4)
¿Has probado esto?
gitk path/to/file
Posible duplicado:
Ver el historial de cambios de un archivo con el control de versiones de Git
A veces quiero pasar por el historial de un archivo en particular. En el pasado usé P4V y esto fue muy rápido e intuitivo.
- Haga clic derecho en un archivo y seleccione historial.
- Desplazarse por las fechas y ver una buena diferencia de exactamente qué cambió en ese archivo en esa fecha. Sencillo.
Cambiar a git esto ahora es una tarea agotadora.
- "nombre de archivo de registro git"
- Mira la historia y elige una fecha, copia el hash
- "git diff hash"
- Desplácese por diff para ver las cosas que cambiaron en el archivo que me interesa.
- No, eso no es, intentemos una fecha diferente: volvamos al paso 2, enjuaguemos y repitamos.
He buscado SO, y he probado algunos de los guis comúnmente sugeridos: github, gitk, gitg, git-gui.
Todo esto elimina la necesidad de ejecutar comandos manualmente, pero el flujo de trabajo es el mismo para esto. Ver el historial del archivo; ver compromiso; buscar a través de diff de muchos archivos irrelevantes. Es lento y repetitivo.
Todos los datos están en el repositorio, así que no veo ninguna razón para que este simple caso de uso común no pueda ser más eficiente.
¿Alguien puede recomendar una herramienta que hace esto, o una forma más eficiente de utilizar la línea de comando para hacer lo que quiero?
Gracias por cualquier sugerencia.
La principal pregunta para mí sería, ¿qué estás tratando de averiguar? ¿Estás tratando de averiguar cuándo se introdujeron ciertos cambios en ese archivo?
Puede usar git blame
para esto, anotará cada línea con un SHA1 y una fecha cuando se cambió. git blame
también puede decirle cuándo se eliminó cierta línea o dónde se movió si le interesa.
Si está tratando de averiguarlo, cuando se introdujo un error, git bisect
es una herramienta muy poderosa. git bisect
hará una búsqueda binaria en tu historial. Puedes usar git bisect start
para comenzar a bisectar, luego git bisect bad
para marcar un commit donde el error está presente y git bisect good
para marcar un commit que no tiene el error. git revisará un compromiso entre los dos y le preguntará si es bueno o malo. Por lo general, puede encontrar el compromiso defectuoso en unos pocos pasos.
Dado que he usado git, casi nunca he encontrado la necesidad de buscar manualmente en los historiales de parches para encontrar algo, ya que la mayoría de las veces GIT me ofrece una forma de buscar realmente la información que necesito.
Si intentas pensar menos sobre cómo hacer un cierto flujo de trabajo, pero más sobre la información que necesitas, probablemente tendrás muchos flujos de trabajo que (en mi opinión) son mucho más simples y rápidos.
Puede usar git log para visualizar los diffs durante la búsqueda:
git log -p -- path/to/file
git log -p
generará un parche (el diff) para cada confirmación seleccionada. Para un solo archivo, use git log --follow -p $file
.
Si está buscando un cambio en particular, use git bisect
para encontrar el cambio en las vistas de registro (n) dividiendo el número de confirmaciones a la mitad hasta que encuentre lo que está buscando cambiar.
También considere git blame
atrás en la historia usando git blame
para seguir los cambios en la línea en cuestión si sabe qué es eso. Este comando muestra la revisión más reciente para afectar cierta línea. Es posible que tenga que retroceder algunas versiones para encontrar el primer cambio en el que se introdujo algo si alguien lo ha ajustado con el tiempo, pero eso podría darle un buen comienzo.
Finalmente, gitk
como GUI me muestra el parche inmediatamente para cualquier confirmación en la que haga clic.
Ejemplo :