Estoy trabajando en un proyecto de Java y necesito entender qué archivos se han modificado para corregir errores.
El control de versiones del proyecto en el que estoy trabajando se gestiona a través de Git.
Hasta ahora he podido obtener el compromiso que se realizó para corregir el error, sin embargo, a partir de esto, ¿cómo puedo obtener los archivos que se modificaron?
Probablemente tenga que ejecutar la diff entre la confirmación que se hizo para corregir el error y otra confirmación, pero ¿cuál es esta otra confirmación? ¿Puedo obtenerlo subiendo el gráfico de confirmación? ¿Si es así, cómo?
Todo esto se tiene que hacer en Java... para interactuar con GitHub estoy usando la librería jgit .
Puede usar git diff con el indicador --name-only comparando dos confirmaciones para verificar los cambios entre ellas.
Por ejemplo, si desea comparar los cambios en las últimas 5 confirmaciones, puede usar la referencia HEAD haciendo lo siguiente:
git diff --name-only HEAD HEAD~5
donde la primera referencia de confirmación es la más nueva.
Si desea comparar los archivos modificados de una confirmación específica con la confirmación HEAD, puede obtenerla haciendo lo siguiente:
git diff --name-only HEAD 8614c3d70397f03ab504de8d23e8255d52fa3ed1
donde 8614c3d70397f03ab504de8d23e8255d52fa3ed1 es su hash de confirmación por ejemplo.
Como desea verificar el archivo que se modificó en una confirmación específica, puede hacerlo usando la misma lógica haciendo:
git diff --name-only COMMIT_HASH COMMIT_HASH~1
Entonces, si la confirmación de corrección de errores tiene el hash 8614c3d70397f03ab504de8d23e8255d52fa3ed1 , por ejemplo, puede verificar los archivos modificados en esta confirmación haciendo lo siguiente:
git diff --name-only 8614c3d70397f03ab504de8d23e8255d52fa3ed1 8614c3d70397f03ab504de8d23e8255d52fa3ed1~1
Para ver los archivos que se modificaron en una revisión, puede hacer
git show --name-status some-revision También puede especificar --name-only en lugar de --name-status
git diff también funciona, pero se usa principalmente para rangos porque si desea usar diff y solo proporciona una revisión única como parámetro, termina comparando con su árbol de trabajo actual, por lo que termina teniendo que pasar 2 parámetros cuando, como en su caso, desea comprobar archivos modificados por una sola revisión.