Obtener files de cada commit de git

Tengo alnetworkingedor de 160k commits cada uno con 3 files que se actualizan (he usado github como website), y estoy buscando una forma de get los files para luego poder poner los contenidos en una database real.

Mi pregunta es ¿cómo puedo get (download?) Los files actualizados de cada confirmación, savelos en una carpeta con una timestamp / confirmarSHA adjunta al nombre para evitar conflictos de nombres.

¿Es esto posible con git? Sé que puedo usar el sitio github para ver los files y lo que ha cambiado, pero el problema es que hay más de 160k commits.

Esta no es la solución más elegante, pero debería funcionar.

Primero, debe get una copy local del repository usando:

git clone <repo-url> 

Obtienes el <repo-url> de la página de GitHub de tu proyecto (marca el button "Clonar o download").

A continuación, cd en el repository local y ejecute algo en esta línea:

 for rev in $(git log --format=%H); do git checkout $rev -- file1 cp file1 ../history/file1-$rev done 

Asegúrese de crear el directory del history por adelantado. Duplique las dos líneas dentro del ciclo para cada file que necesita get.

Ejecute git reset --hard al final para dejar el repository en su estado original.

Si también necesita la timestamp del file, puede getlo usando git log --format=%ct file1 . Reemplace el command cp con:

 ts=$(git log --format=%ct $rev file1) cp file1 ../history/file1-$rev-$ts 

Compruebe la documentation de otro file o confirme las properties que puede get usando get log .

Una vez que tenga una copy de trabajo local de su repository *, puede get los files de cualquier confirmación de git simplemente revisando esa confirmación, como en:

 git checkout 1e6c98511d9154bfdc49a31fd26229953df0bd70 

Entonces, para get los files de cada confirmación en el historial de su proyecto, solo necesita (a) generar una list de confirmaciones para su proyecto, y luego (b) iterar sobre esa list, revisando cada confirmación y procesando los files.

El command git rev-list HEAD generará una list de todas las confirmaciones en la twig actual (desde la más nueva hasta la más antigua). Si desea procesar estos files en order de reenvío, puede conectarlos a tac para invertir la list, por ej.

 for rev in $(git rev-list HEAD | tac); do git checkout $rev ...do something here... done 

* ejecutando git clone <repourl>

Asumiendo que eres nuevo con git, tendrás que instalar las herramientas git desde aquí:

https://git-scm.com/

Luego tendrá que clonar su repository en la ejecución de la console git:

git clone https://github.com/username/repositoryname.git

Después de estos pasos, podrá moverse en las diferentes confirmaciones, como lo explica @larsks.

Para enumerar cada confirmación de un file en particular:

Listar todas las confirmaciones para un file específico