Ich möchte nur eine Liste der geänderten Dateien zwischen zwei Revisionen erhalten, was einfach ist:
git diff -–name-only commit1 commit2 > /path/to/my/file
Aber was soll ich schreiben, wenn ich alle aufgelisteten Dateien an einen anderen Ort kopieren möchte? Und ich brauche eine völlig identische Verzeichnisstruktur für kopierte Dateien.
Zum Beispiel habe ich Dateien geändert und hinzugefügt:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Ich möchte in /home/changes/all diesen geänderten und hinzugefügten Dateien:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patchkann dies für Festschreibungsbereiche tun.
git diff commit1 commit2 > my.patchund dann cd other/path; patch -p1 < my.patch. Warum muss es mit vollständigen Kopien der Dateien gemacht werden? Wenn Sie der Meinung sind, dass der Patch möglicherweise nicht angewendet wird und das andere Verzeichnis daher nicht wirklich im commit1Status ist, sollten Sie wirklich alles aus dem commit2Status kopieren ...