2013-02-23 15 views
11

Trong nỗ lực đầu tiên của tôi để làm điều gì đó với git tôi đã sử dụng GitHub cho Windows. Vì nó là công cụ đơn giản và khá nguyên thủy, tôi đã quyết định dùng thử SmartGit. Khi tôi đang nhìn xung quanh, tôi phát hiện ra mình có dư thừa trong các thử nghiệm của mình - một thứ gọi là "đầu bị mất". Làm thế nào tôi có thể loại bỏ rác thải này? Có vẻ như làLàm cách nào để loại bỏ "Người đứng đầu bị mất"?

git gc --prune=now 

hoặc điều gì đó tương tự sẽ hoạt động, nhưng không có gì thay đổi. Tôi đã thử googling, nhưng tất cả mọi người đã cố gắng để làm điều ngược lại - khôi phục lại cam kết bị mất từ ​​đầu bị mất hoặc một cái gì đó tương tự.

Trả lời

10

Theo man page, git gc sẽ không thu thập các tệp rác được tham chiếu thông qua các tệp 'reflogs' (.git/logs/<ref-name> trong kho của bạn). Các HEAD này chính xác là những gì SmartGit/Hg hiển thị và khi bạn xóa các bản ghi này, các cam kết không được tham chiếu sẽ được thu thập bởi git gc --prune=now.

Cảnh báo Trừ khi không có lý do thực sự tốt để loại bỏ hoàn toàn các cam kết này (như xóa dữ liệu nhạy cảm), có thể bạn sẽ không quan tâm đến một trong những cam kết này . Ít nhất, khai hoang không gian đĩa là không có lý do chính đáng, theo ý kiến ​​của tôi.

+1

khôi phục không gian đĩa không phải là lý do của tôi (kho lưu trữ git của tôi chiếm ít hơn 0,01% không gian có sẵn) - Tôi muốn loại bỏ "thử nghiệm aaaeaeae 2626" ở khắp mọi nơi. – Bulwersator

+0

Sau một thời gian, thật khó để tìm thấy cam kết của tôi khi tôi có hàng trăm người trong số họ. Đó sẽ là lý do hợp lệ đối với tôi. – pevik

+0

@pevik, nếu nhiều người mất đầu làm cho Log khó hiểu, chỉ cần bỏ chọn tùy chọn và chỉ khi cần kiểm tra lại. – mstrap

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