El extracto de Git se compromete como files separados

Tengo un repository git con un file que tiene nuevos compromisos agregados casi a diario.

Me gustaría extraer copys del file, ya que miró cada compromiso a un nuevo directory.

Lo ideal es que los files tengan una date ( 2017_08_24.txt ) según el momento en que se realizó la confirmación.

Ya he probado git format-patch -o directory --root HEAD pero esto exporta el logging de cambios, no el file completo tal como se veía en el momento de la confirmación.

Gracias

git show <commit>:<file> le enviará el contenido de un file tal como estaba en un hash de confirmación específico. Puede usar git log para get todas las confirmaciones en un file y luego usar xargs para pasarlas a git show .

La siguiente línea de command extraerá una serie de files con el nombre original y el hash de confirmación concatenados:

 $ git log --format="%H" /path/to/file | \ xargs -I % sh -c "git show %:/path/to/file > /path/to/target/filename.%" 

Aquí hay un script bash. No está completamente probado. Puede modificarlo como lo desee.

 #!/bin/bash branch=$1 file=$2 git log --pretty=%H $branch | while read hash;do object="$branch:$file" objecthash=$(git rev-parse $object 2>/dev/null) if [ "$object" != "$objecthash" ];then git cat-file -p $objecthash > $(git log -1 --pretty=%cd --date=format:%Y%m%d_%H%M%S $hash).txt else echo "$file does not exist in $hash" fi done 

Para una confirmación específica, puede recuperar la versión del file como esta

 git show 23uggf2f8g:myfile.txt > backupDir/oldVersion.txt 

Pero creo que tienes que escribir un script para hacerlo automáticamente para cada commit