2011-09-17 33 views
9

Nếu tôi đẩy một cam kết ban đầu xấu (hoặc nhiều hơn một) đến một kho lưu trữ từ xa và muốn chỉ xóa/hủy nó - tôi có thể làm điều đó bằng lệnh không?Git kho lưu trữ từ xa rõ ràng

Điều quan trọng là phải xóa hoàn toàn khỏi máy chủ để không sử dụng dung lượng đĩa.

E.G. Hôm nay tôi đã đẩy toàn bộ dự án Visual Studio với các dll, sdfs và vv. Thứ nhất, các tệp này khá lớn, thứ hai là một số trong số chúng được sửa đổi bởi VS của các nhà phát triển khác và không thể hợp nhất được. Điều này làm cho tôi google một chút và tôi phát hiện ra những tập tin này nên được bỏ qua. Nhưng cam kết đầu tiên đã cắt kho của tôi. Tôi muốn loại bỏ điều này và giải phóng không gian đĩa.

Có thể xóa git repo và thêm lại thông qua trang web của máy chủ (assembla), nhưng điều này nghe có vẻ không giống với giải pháp .. Có cách nào chuyên nghiệp hơn không?


UPDATE:

Tôi cố gắng gợi ý từ câu trả lời dưới đây nhưng nó đã không làm việc: 'git push -f' 'git push --force' 'git push gốc -f' 'git đẩy nguồn gốc --force' dẫn:

$ git push --force 
Counting objects: 19, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (19/19), 6.85 KiB, done. 
Total 19 (delta 3), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull fir 
) 
To [email protected]:xxxxx.git 
! [remote rejected] master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxxxx.git' 

Trả lời

9

Bạn có thể buộc đẩy "đúng" repo với git push -f. Tùy thuộc vào máy chủ lưu trữ, các đối tượng lỏng lẻo sẽ được làm sạch khi git gc được chạy. cập nhật: Theo this bạn không thể buộc git gc trong assembly.

Nếu bạn muốn chúng được dọn sạch ngay lập tức và assembla không cho phép bạn ép buộc git gc, tùy chọn khác là xóa repo và đẩy một repo mới.

Ngoài ra, như Ryan đã nêu trong các ý kiến, hãy chắc chắn để cho mọi người biết rằng có thể đã nhân bản repo, mà bạn đã viết lại lịch sử.

+0

+1, nhưng 1) đảm bảo thu gom rác đang chạy thường xuyên, vì các đối tượng mồ côi sẽ không được dọn sạch cho đến khi chúng đủ điều kiện và 2) đảm bảo mọi người đều biết bạn đang viết lại lịch sử. –

+1

Nếu bạn có thể, hãy xóa một nhánh chủ từ xa 'git push origin: master'. Một số cấu hình kho lưu trữ từ xa sẽ không cho phép điều này. – basicxman

+0

Chính xác bạn có ý nghĩa gì khi 'xóa repo'? Có một lệnh đặc biệt cho điều đó, hoặc bạn chỉ có nghĩa là để làm điều này thông qua trang web assembla? – gisek

Các vấn đề liên quan