Я просто хочу отримати список змінених файлів між двома версіями, який простий:
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
штату ...