Eu só quero obter uma lista de arquivos alterados entre duas revisões, o que é simples:
git diff -–name-only commit1 commit2 > /path/to/my/file
Mas, o que devo escrever se quiser copiar todos os arquivos listados para outro local? E eu preciso de uma estrutura de diretório completamente idêntica para arquivos copiados.
Por exemplo, eu modifiquei e adicionei arquivos:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Eu quero ter em /home/changes/todos os arquivos alterados e adicionados:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patchpode fazer isso para intervalos de confirmação.
git diff commit1 commit2 > my.patche depois cd other/path; patch -p1 < my.patch. Por que isso precisa ser feito com cópias completas dos arquivos? Se é porque você acha que o patch pode não se aplicar, e, portanto, o outro diretório não está realmente no commit1estado, você realmente deveria copiar tudo do commit2estado ...