2012-04-05 25 views
6

Tôi đang tìm một giải pháp đơn giản để tạo bản lưu trữ của tệp đã thay đổi gần đây.Sử dụng Git để tạo bản lưu trữ các tệp đã thay đổi

tôi nhận được lệnh này đơn giản từ google

git archive -o update.zip HEAD $(git diff --name-only HEAD^) 

Khi tôi chạy nó trong GIT BUSH, nó vẫn không ngừng nói nói gây tử vong: Không phải là một tên đối tượng hợp lệ

+1

Những lệnh nào đó đến từ đâu? (Đầu ra của 'git diff --name-only HEAD ^'? Bạn đang ở trong một kho lưu trữ hợp lệ, phải không?) – Cascabel

+0

git diff --name-only HEAD^sẽ xuất ra một danh sách các tập tin đã thay đổi mà tôi muốn lưu trữ. Tôi đã thử nghiệm lệnh này với một kho lưu trữ thử nghiệm, nó hoạt động như được exptected. Nó không hoạt động trong kho dự án asp.net thực của tôi – Kuroro

+0

Tôi nghi ngờ, có một số không thể lưu trữ? nhị phân? – Kuroro

Trả lời

11

Tôi đang sử dụng this answer trong trường hợp đó cho tôi biết

tar czf changed-files.tar.gz `git diff --name-only [diff options]` 

Ví dụ: để tạo e một kho lưu trữ có chứa các tập tin thay đổi trong bốn phiên bản cuối cùng, tôi muốn làm

tar czf changed-files.tar.gz `git diff --name-only HEAD~4..` 

này giả –   tất nhiên   – rằng HEAD~4 không thực sự tồn tại.

+0

eckes, Cảm ơn bạn đã chỉ ra rằng HEAD có thể sử dụng theo cách này. – Kuroro

+0

-1: Giải pháp này chỉ hoạt động nếu các tệp trong diff tồn tại ở HEAD, bất kể cam kết bạn chọn. –

1

tôi sử dụng bí danh này để bao gồm tập tin mới không ĐẦU:

alias gittar='tar -czvf working-files.tgz \ 
       $(git status -s | sed -r "s/..(.*)/\1 /")' 
Các vấn đề liên quan