Я просто хочу получить список измененных файлов между двумя ревизиями, который прост:
git diff -–name-only commit1 commit2 > /path/to/my/file
Но что мне написать, если я хочу скопировать все перечисленные файлы в другое место? И мне нужна полностью идентичная структура каталогов для скопированных файлов.
Например, я изменил и добавил файлы:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Я хочу иметь во /home/changes/всех этих измененных и добавленных файлах:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patchможет сделать это для диапазонов фиксации.
git diff commit1 commit2 > my.patchа потом cd other/path; patch -p1 < my.patch. Почему это должно быть сделано с полными копиями файлов? Если это потому, что вы думаете, что патч может не применяться, и, следовательно, другой каталог на самом деле не находится в commit1состоянии, вы действительно должны скопировать все из commit2состояния ...