ฉันแค่ต้องการได้รับรายชื่อของไฟล์ที่ถูกเปลี่ยนระหว่างการแก้ไขสองครั้งซึ่งง่ายมาก:
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.patchcd other/path; patch -p1 < my.patchแล้วก็ ทำไมต้องทำกับไฟล์ทั้งหมด? ถ้าเป็นเพราะคุณคิดว่าแพตช์อาจใช้ไม่ได้ดังนั้นไดเรกทอรีอื่น ๆ ไม่ได้อยู่ในcommit1สถานะจริง ๆ คุณควรคัดลอกทุกอย่างจากcommit2รัฐ ...