Muitas vezes me pego querendo empacotar meus commits para poder reaproveitá-los novamente depois, ou mesmo apenas para mandar pra alguém ou anexá-lo ao ticket no sistema.
Depois de algumas pesquisas, conheci alguns comandos bem legais que compartilho aqui com você.
Como sabemos, todo commit tem um SHA único, que pode ser visto com o comando git status. Com o SHA do nosso commit em mãos, temos os seguintes comandos:
1. Listando arquivos alterados em um determinado commit:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT SEU_SHA
2. Criar um .TAR com todos os arquivos alterados de um commit, mantendo a estrutura de pastas:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT SEU_SHA | xargs tar -rf mytarfile.tar
3. Criar um .ZIP com mais de um commit envolvido:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT SEU_SHA | xargs zip -r0 meuarquivo.zip $1
Fica a dica.. :)
esse negócio é dificil