es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lista de todos los archivos modificados por commits en git

Cómo listar todos los archivos que fueron “modificados” en algún momento entre dos commits? Estoy buscando un comando similar a git diff COMMIT1..COMMIT2 --name-only pero que incluya los archivos que fueron modificados y revertidos posteriormente.

Por ejemplo, supongamos que tengo un repositorio con una serie de commits (historia lineal): C0<-C1<-C2<-C3<-C4. El commit C1 introdujo un nuevo archivo F y luego el commit C3 lo eliminó del repositorio. Estoy buscando un comando que, dado C0 y C4, me indique que en algún lugar entre ellos hubo un archivo F. Aunque no exista un archivo así en C0 ni en C4. Por lo tanto, git diff no mencionaría el archivo F en absoluto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para listar todos los archivos que fueron “modificados” en algún punto entre dos confirmaciones, incluyendo los archivos que fueron modificados y luego revertidos, puedes utilizar el siguiente comando:

    git log --pretty=format: --name-only --diff-filter=A..M COMMIT1..COMMIT2 | sort -u
    

    Aquí te explico qué hace cada parte del comando:

    • git log --pretty=format: --name-only --diff-filter=A..M COMMIT1..COMMIT2: Este comando lista todos los archivos que fueron modificados entre COMMIT1 y COMMIT2, incluyendo los archivos que fueron añadidos y modificados, así como los archivos que fueron modificados y luego revertidos. La opción --pretty=format: le indica a git que solo muestre los nombres de los archivos, mientras que --name-only le indica que solo muestre los nombres de los archivos en sí. La opción --diff-filter=A..M le indica a git que aplique el filtro a las diferencias de las confirmaciones y solo muestre los archivos marcados como Añadidos, Copiados, Borrados, Modificados o Renombrados.
    • | sort -u: Esta parte del comando ordena alfabéticamente la salida (sort) y luego elimina los duplicados (-u) para obtener una lista única de todos los archivos que fueron modificados entre las dos confirmaciones.

    Utilizando este comando, deberías poder identificar el archivo F que fue añadido y posteriormente eliminado según el ejemplo que describiste.

Comments are closed.