gui cracen ckaken git move gitk

cracen - gitk windows



Usando gitk para ver el historial completo de un archivo movido (4)

Aquí hay una función de bash que debería mostrarle el historial de un archivo (usando gitk) en todas sus encarnaciones ... Lo dejaré como un ejercicio para el lector si lo necesitan para otro shell:

# bash gitk_follow () { while (( "$#" )); do git log --oneline --name-status --follow $1; shift; done | perl -ne ''if( s{^(?:[ACDMRTUXB]|R/d+)/s+}{} ) { s{/s+}{/n}g; print; }'' | sort -u } # used as: gitk $(gitk_follow some_file)

actualizado:

Cambiado para usar perl porque no presté suficiente atención a la salida del registro de git en la última versión.

Después de mucho buscar, no he encontrado un método satisfactorio que sea fácil de usar para ver el historial completo de un archivo movido en Git y, lo que es más importante, en Gitk. El uso de "git log --follow [filePath]" e incluso "gitk --follow [filePath]" le confirma que el archivo estaba involucrado pero no le mostrará el historial de cambios real del archivo antes de la mudanza. Por lo tanto, he encontrado una solución alternativa simple pero en bruto.

  1. Haga un gitk en el archivo que se ha movido: "gitk [newFilePath]". Copie el ID de SHA1 de la primera confirmación, esta debe ser la confirmación a la que se ha movido el archivo.
  2. Haga un gitk en el ID de SHA1 copiado: "gitk [SHA1ID]". El último compromiso debe ser cuando el movimiento ha ocurrido. Encuentra el archivo movido y copia la ruta antigua.
  3. Haga un gitk en el ID de SHA1 que acabamos de copiar y la ruta del archivo anterior: "gitk [SHA1ID] - [oldFilePath]"

Este proceso le permitirá ver el historial del archivo antes del traslado. Si ha habido varios movimientos, se puede repetir el proceso anterior.

Si existen soluciones mejores para este problema, especialmente si hay una forma de combinar estos pasos para mostrar el historial completo con los movimientos, sería muy apreciado.


Otra alternativa es usar la aplicación SourceTree (GUI) desarrollada por Atlassian. Dentro de la aplicación, puede hacer clic derecho en el archivo y seleccionar "Registrar seleccionado ..."

.

En la ventana emergente, a continuación, le permite "Seguir archivos renombrados":

También utilizo GitHub para Mac , pero todavía no veo ese tipo de funcionalidad.

(No estoy afiliado con ninguno de ellos!)


Se incluye una función más simple que utiliza diferentes opciones de registro de git y awk para obtener los nombres de los archivos (y el "-" que necesita gitk):

# bash gitk_follow () { while (( "$#" )); do git log --pretty="" --name-status --follow $1; shift; done | awk ''{print $NF}'' | sort -u } # used as: gitk -- $(gitk_follow some_file)


Si desea ver los cambios que se hicieron en cada confirmación, incluso si se ha cambiado el nombre del archivo, puede usar la opción -p del git log de git log :

git log -p --follow [file/with/path]