Chcę tylko uzyskać listę zmienionych plików między dwiema wersjami, co jest proste:
git diff -–name-only commit1 commit2 > /path/to/my/file
Ale co mam napisać, jeśli chcę skopiować wszystkie wymienione pliki w inne miejsce? I potrzebuję całkowicie identycznej struktury katalogów dla kopiowanych plików.
Na przykład zmodyfikowałem i dodałem pliki:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Chcę mieć w /home/changes/tych wszystkich zmienionych i dodanych plikach:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patchmoże to zrobić dla zakresów zatwierdzeń.
git diff commit1 commit2 > my.patcha potem cd other/path; patch -p1 < my.patch. Dlaczego trzeba to robić z pełnymi kopiami plików? Jeśli to dlatego, że myślisz, że łatka może nie mieć zastosowania, a tym samym inny katalog nie jest w commit1stanie, naprawdę powinieneś skopiować wszystko ze commit2stanu ...