¿Cómo get SOLO el nombre de file con la ruta usando git log?

Utilicé casi todos los commands de logging de git, pero no he encontrado la mejor manera de hacerlo. Solo necesito esto: get solo el nombre de file con ruta de acceso nada más

/path/filename.txt /path/anotherfile.ext ... ... 

Mi input es date FROM y TO al command git log. Cualquiera de los loggings de git proporciona el nombre del desarrollador o la date o el número de confirmación o algo que no quiero con los nombres de los files. ¿Cómo get SOLO el nombre del file con la ruta completa?

Use las opciones --since y --until para seleccionar el intervalo de time y luego puede usar las tuberías UNIX para grep , sort y recostackr las routes uniq e:

 git log --name-status --since='..' --until='..' | grep -E '^[AZ]\b' | sort | uniq | sed -e 's/^\w\t*\ *//' 

Ejemplo:

 git log --name-status --since='1 January 2015' --until='2 January 2015' | grep -E '^[AZ]\b' | sort | uniq | sed -e 's/^\w\t*\ *//' 

Para get resultados de git log más detallados, consulte Cómo hacer que el logging de git muestre nombres de files como svn log -v


Si tiene que cometer hashes, también puede usar git diff y --name-only lugar, como la otra respuesta menciona:

 git diff hash1..hash2 --name-only 

Esto no utiliza el git log , pero si está dispuesto a utilizar objects de confirmación (hash, references de bifurcación u otros identificadores de compromiso), git diff lo simplifica. Ejemplo para get los files modificados para las últimas tres confirmaciones.

 $ git diff HEAD~3 --name-only > some/path/with/file.php > another/path/and/file.html > yet/another.json 

Puedes replace HEAD~3 con un solo compromiso, por lo que estás comparando con el HEAD actual (el compromiso en el que estás " <commitish>..<commitish> "), o luego define un range de compromiso con <commitish>..<commitish> :

 $ git diff HEAD..abcd1234 --name-only > file/name/here.cpp $ git diff 1234abcd..abcd1234 --name-only > some/file/name-here.txt 

Si necesita filtrar los files de acuerdo con el tipo de modificación (por ejemplo, agregado, modificado, eliminado …), puede utilizar la opción --diff-filter . man git diff :

 --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]] Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (ie regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. 

Si necesita usar dates para filtrar, esta puede no ser la mejor opción. Quizás use git log --since=... para get el primer hash de la date y pasarlo a git diff ?

Use --name-only y elimine el post con un formatting vacío

 git log --name-only --format="" 

Simplemente use todas las demás opciones de git log como de costumbre. P.ej

 git log --name-only --format="" -n 2 master 

Opcionalmente orderar y eliminar duplicates

 git log --name-only --format="" | sort | uniq