¿Cómo dar diferentes valores a un command git y almacenar el resultado en varios files para cada valor?

Intento generar un file JSON para cada confirmación de diff que obtuve en mi GitHub. Para hacer eso, almaceno mi número de "SHA" en una varible como esta:

$var=$(git log --pretty=format:'%h') 

entonces quiero hacer un boucle para, donde digo por cada valor almacenado en var ejecutar el command git show y almacenar el resultado en un file por ejemplo (commit1.json …. Commit100.json etc.) ( git show $var > Commits.json )

Soy un novato en el caparazón, así que no tengo idea de cómo hacer que eso suceda. Por favor, estoy realmente contando con tu ayuda.

¿Cómo puedo deshacerme de los caracteres especiales cuando genero mis files? Revision_2017-03-20T140150 + 0100

Porque más tarde estoy tratando de abrirlos y analizarlos a través de ellos y debido a los carracteres especiales, no puedo abrirlos.

Gracias de antemano por tu ayuda

git log --pretty=format:'%h' | while read revision; do git show $revision > revision_"$revision".json; done

Si desea usar algo más (como la date de autor) para nombrar el file, podría hacer algo como esto:

git log --pretty=format:'%h' | while read revision do date=$( git show --summary --pretty=%aI $revision | head -n 1) git show $revision > revision_"$date".json done