Làm cách nào để tạo lưu trữ của kho lưu trữ hiện tại bao gồm các thay đổi không được cam kết cục bộ bằng cách sử dụng git archive
?Lưu trữ Git của kho lưu trữ với các thay đổi không được cam kết
Trả lời
Tôi biết điều này là cũ, nhưng tôi nghĩ rằng tôi đã tìm thấy một giải pháp.
Run:
stashName=`git stash create`;
git archive <options> $stashName
Kể từ git muốn một chất rắn cam kết thực hiện một kho lưu trữ, chúng ta có thể làm cho một 'một off' cam kết sử dụng git stash
. Lệnh create
chỉ tạo cam kết stash (không đặt lại thư mục làm việc của bạn hoặc đẩy nó vào ngăn xếp stash) và trả về giá trị băm cho nó.
Nếu bạn lo lắng về khoảng trống từ cam kết lơ lửng, bạn có thể làm sạch nó bằng git gc --prune=now
. Nếu không, chỉ cần chờ 2 tuần và nó sẽ biến mất.
Nếu bạn chưa cam kết thay đổi, thì git archive
sẽ không giúp bạn. Nếu bạn chỉ muốn một ảnh chụp nhanh của khu vực làm việc của bạn, tar
có lẽ là đặt cược tốt nhất của bạn.
Cải thiện câu trả lời nevsan cho mục đích của tôi - để lưu trữ mã mới nhất trong mọi trường hợp (cam kết hay không):
uploadStash=`git stash create`; git archive -o code_outgoing.zip ${uploadStash:-HEAD}
Đã sửa lỗi: git stash create [now] luôn trả về thành công và không in được gì khi không có tệp để lưu trữ. Sử dụng cú pháp $ {var: -default} thay vì dựa vào mã thoát. –
IIRC có một vấn đề với điều này, nó không đưa ra các tập tin git-gỡ bỏ từ kho lưu trữ. –
Một giải pháp với git ls-files
:
git ls-files -z | xargs -0 tar -czvf archive.tar.gz
Đây là, theo tôi, câu trả lời hay nhất. Tuy nhiên, tôi khuyên bạn nên sử dụng tùy chọn -z của ls-files và tùy chọn -0 (zero) của xargs sao cho tên tệp có không gian được xử lý chính xác: git ls-files -z | xargs -0 tar -czvf archive.tar.gz . – S2108887
Bạn hoàn toàn đúng! Cảm ơn. Tôi đã thêm các tùy chọn này vào dòng lệnh. –
'git ls-files | tar Tczf - archive.tar.gz' không có giới hạn áp đặt hệ thống trên kích thước của một lệnh duy nhất của args. xargs không tốt cho bất kỳ lệnh nào bạn thực sự chỉ cần chạy một lần cho mọi thứ. – jthill
- 1. git khi thay đổi kho lưu trữ
- 2. Ghi đè kho lưu trữ git từ xa với kho lưu trữ của tôi
- 3. Thêm thay đổi từ một kho lưu trữ Mercurial sang một kho lưu trữ Mercurial khác
- 4. svn cam kết với nhiều kho lưu trữ
- 5. Quản lý nhiều kho lưu trữ git
- 6. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 7. Git, xóa kho lưu trữ
- 8. Không thể đẩy tới kho lưu trữ Git
- 9. Làm cách nào để tải lên các thay đổi đã cam kết đối với kho lưu trữ GitHub của tôi?
- 10. Làm cách nào để đẩy cam kết sửa đổi vào kho lưu trữ Git từ xa?
- 11. Tạo kho lưu trữ git chứa một kho git khác
- 12. Biểu tượng kho lưu trữ Git
- 13. xcode git không thể kéo các thay đổi từ kho lưu trữ từ xa
- 14. Các kho lưu trữ git lồng nhau?
- 15. git kho lưu trữ nhân bản kho
- 16. Vùng lưu trữ git lưu trữ tệp như thế nào?
- 17. git chỉ đẩy một phần của kho lưu trữ
- 18. Cam kết lưu trữ vào SVN Repository
- 19. đặt kho lưu trữ ftp bằng git
- 20. Mẫu lưu trữ với các thủ tục được lưu trữ
- 21. Trích xuất một phần của kho lưu trữ git?
- 22. Tôi có thể xóa cam kết ban đầu khỏi kho lưu trữ Git không?
- 23. Cập nhật một kho lưu trữ cục bộ với các thay đổi từ kho lưu trữ Github
- 24. Cách đặt lại kho lưu trữ GIT từ xa để xóa tất cả các cam kết?
- 25. Lưu trữ kho lưu trữ OSGI OBR?
- 26. thay đổi chế độ báo cáo khác của git sau khi di chuyển kho lưu trữ
- 27. Làm cách nào để tìm các cam kết mới nhất trong một kho lưu trữ git?
- 28. Làm thế nào để bước qua kho lưu trữ git?
- 29. Lưu trữ cấu hình git như một phần của kho lưu trữ
- 30. Đẩy từ kho lưu trữ cục bộ sang GitHub được lưu trữ từ xa
Các công trình lớn, cảm ơn! –