Tôi chỉ muốn nhận một danh sách các tập tin thay đổi giữa hai phiên bản, rất đơn giản:
git diff -–name-only commit1 commit2 > /path/to/my/file
Nhưng, tôi nên viết gì, nếu tôi muốn sao chép tất cả các tệp được liệt kê sang nơi khác? Và tôi cần cấu trúc thư mục hoàn toàn giống hệt nhau cho các tập tin sao chép.
Ví dụ: tôi đã sửa đổi và thêm tệp:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
Tôi muốn có trong /home/changes/
tất cả những tập tin đã thay đổi và thêm vào:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
git format-patch
có thể làm điều này cho phạm vi cam kết.
git diff commit1 commit2 > my.patch
và sau đó cd other/path; patch -p1 < my.patch
. Tại sao nó phải được thực hiện với các bản sao đầy đủ của các tập tin? Nếu đó là vì bạn nghĩ rằng bản vá có thể không áp dụng, và do đó thư mục khác không thực sự ở commit1
trạng thái, bạn thực sự phải sao chép mọi thứ từ commit2
trạng thái ...