Sugiro escrever um pequeno script em torno de git log
e git show
da seguinte forma:
#!/usr/bin/env bash
DONE=false
FILE="$1"
EXPORTFILE=/tmp/exportfile
git log --pretty=format:"%h" "${FILE}" |until $DONE
do read || DONE=true
echo "Exporting $FILE as of commit $REPLY to $EXPORTFILE-$REPLY"
git show $REPLY:"$FILE" > $EXPORTFILE-$REPLY
done
Isso exportará todas as versões confirmadas conhecidas do primeiro argumento na ramificação atual para /tmp/exportfile-12345678
.
Por que until
, $REPLY
e não apenas while read $commit
? Você vai perder a última linha / commit. Leia esta questão mais sobre isso.