Solo quiero obtener una lista de archivos modificados entre dos revisiones, que es simple:
git diff -–name-only commit1 commit2 > /path/to/my/file
Pero, ¿qué debo escribir si quiero copiar todos los archivos enumerados en otro lugar? Y necesito una estructura de directorios completamente idéntica para los archivos copiados.
Por ejemplo, he modificado y agregado archivos:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Quiero tener en /home/changes/todos esos archivos modificados y agregados:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patchpuede hacer esto para los rangos de confirmación.
git diff commit1 commit2 > my.patchy luego cd other/path; patch -p1 < my.patch. ¿Por qué tiene que hacerse con copias completas de los archivos? Si es porque cree que el parche podría no aplicarse, y por lo tanto el otro directorio no está realmente en el commit1estado, que realmente debería copiar todo desde el commit2estado ...