Hay veces que en los despliegues de código, nos interesa subir únicamente los archivos que hemos tocado, junto con su estructura de directorios, y si han sido varios archivos de localizaciones muy distintas, puede ser un problema o vernos obligados a subir el código completo, por ejemplo en alguna actualización de core o de algún tipo que modifique cantidad de archivos ya existentes y añada nuevos.
Bueno pues como casi todo en la informática, hay solución a éste problema.
Vamos a aprender con un sencillo comando a copiar los archivos que han cambiado de un commit y evitar subir el sistema completo, para esto:
1 - Una vez tenemos los cambios hacemos push a git con los cambios que queremos en la rama con la que trabajamos.
2 - Ejecutamos el siguiente comando:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT "ID_DEL_COMMIT" | xargs tar -rf "archivoComprimido".tar
3 - Al ejecutar el comando cambiamos "ID_DEL_COMMIT"
por el ID del commit que acabamos de hacer y "archivoComprimido".tar por el nombre que queráis dar a la compresión de todo el arbol de directorios y ficheros del commit.
Y listo, ya tenemos un paquete preparado para subir con nuestra actualización parcial de código, espero que os ayude en vuestros despliegues.