git diff solo el primer file (de todos los cambios no registrados)

Si hago git diff , obtendré los cambios actuales de todos los files no registrados.

¿Hay alguna forma más sencilla de ejecutar automáticamente git diff solo en el primer file listdo (usando los indicadores incorporados)?

Lo mejor que he encontrado es:

 function git_diff_first_unstaged_file() { if [[ $(git diff --name-only) ]]; then git diff $(git diff --name-only | sed -n '1 p') else echo "gdf: There are currently no unstaged changes." fi } alias gdf='git_diff_first_unstaged_file' 

Me pregunto si hay una bandera de git diff que cepillé que haría esto por mí.

Además de git diff –name-only, también tiene git ls-files --modified que git ls-files --modified sin clasificar (para ser utilizado con | sed -1p para get el primero).

No olvide que si desea comenzar a organizar el diff para el primer file, tiene la opción de simplemente escribir:

 git add -p 

Verá y podrá agregar diffs selectivamente para el primer file (y luego el segundo, en cuyo momento puede escribir q para salir de la session interactiva)

Siguiendo las recomendaciones en los comentarios, se puede agregar el siguiente alias a ~/.gitconfig (de la configuration del proyecto) para hacer una diferencia solo con el primer file no rastreado pero rastreado :

 [alias] gdf = "! git diff $(git diff --name-only | sed -n 1p)" 

Si quiere hacer una diferencia con el i-ésimo file no rastreado pero rastreado :

 [alias] gdi= "!f() { git diff $(git diff --name-only | sed -n $1p); }; f" 

git gdi 3 mostrará la diferencia de los cambios no registrados del tercer file (o el último file si hay less de 3 files).