Tôi có một cây git nhưLàm thế nào để thực sự xóa một nhánh git (tức là loại bỏ tất cả các đối tượng/cam kết của nó)?
A---B---C topic
/
D---E---F---G master <--
Tôi muốn loại bỏ chủ đề và tất cả các đối tượng trên nó.
Tôi lưu ý SHA ID của chủ đề, sau đó gõ:
git branch -D topic
git gc # <-- I also tried prune here...
git checkout -b temp <SHA1 ID of topic>
Sau khi lệnh cuối cùng tôi mong đợi để nhận được một lỗi (cái gì đó như "ID đối tượng không tồn tại ..." hoặc somth như thế.). Tuy nhiên không có lỗi và gitk cho thấy cấu trúc cây giống như trên?
Tôi đang thiếu gì - tôi nghĩ gc/prune có nghĩa vụ xóa tất cả các đối tượng không thể truy cập?
Câu trả lời của VonC giải thích sự thật của vấn đề. Nếu bạn muốn biết lý do "triết học", nó đơn giản là git cố gắng hết sức không để cho bạn vô tình xóa bất cứ điều gì. 'git gc' của chính nó được dự định là một hoạt động dọn dẹp/đóng gói lại. Bạn phải nói điều gì đó mạnh hơn một chút để làm cho nó có khả năng xóa công việc gần đây. – Cascabel