Nun, so etwas wie dieses:
n=0
git rev-list --reverse HEAD | while read rev; do
n=$(expr $n + 1)
dir="$n-$rev"
mkdir "$dir"
git archive --format=tar "$rev" | (cd $dir && tar xvf -)
done
Dadurch werden die Änderungen in Ordnern setzen nummeriert "1-Hash", "2-Hash" usw. (die Formel ändern dir entsprechend zu berechnen) .
Auch das funktioniert nur für "HEAD" ... es ist schwer, ein Nummerierungsschema zu finden, wenn Sie alle Zweige benötigen, und schwer zu wissen, was sonst die Verzeichnisse heißen. Obwohl Sie einfach git rev-list --branches
verwenden und dann berechnen Sie als $(git name-rev "$rev")
Ideal wäre Sie in der Lage, die Dateien mit harten Links zu extrahieren, um identische Inhalte darzustellen, aber das wäre ein bisschen mehr Arbeit!
warum müssen Sie dies tun? –