Khi bạn sử dụng git push origin :staleStuff
, nó sẽ tự động xóa origin/staleStuff
, vì vậy khi bạn chạy git remote prune origin
, bạn đã cắt bớt một số chi nhánh đã bị xóa bởi người khác. Có nhiều khả năng là đồng nghiệp của bạn hiện cần chạy git prune
để loại bỏ các nhánh bạn đã xóa.
Vì vậy, chính xác git remote prune
làm gì? Ý tưởng chính: các nhánh địa phương (không theo dõi các nhánh) không được chạm bởi lệnh git remote prune
và cần được loại bỏ thủ công.
Bây giờ, một ví dụ thực tế để hiểu rõ hơn:
Bạn có một kho lưu trữ từ xa với 2 chi nhánh: master
và feature
. Giả sử rằng bạn đang làm việc trên cả hai chi nhánh, vì vậy kết quả là bạn có những tài liệu tham khảo trong kho địa phương của bạn (tên tài liệu tham khảo đầy đủ được đưa ra để tránh bất kỳ sự nhầm lẫn):
refs/heads/master
(ngắn tên master
)
refs/heads/feature
(tên viết tắt feature
)
refs/remotes/origin/master
(ngắn tên origin/master
)
refs/remotes/origin/feature
(ngắn tên origin/feature
)
.210
Bây giờ, trường hợp điển hình:
- Một số nhà phát triển khác kết thúc tất cả các công việc trên
feature
, sáp nhập nó vào master
và loại bỏ feature
chi nhánh từ kho lưu trữ từ xa.
- Theo mặc định, khi bạn thực hiện
git fetch
(hoặc git pull
), không có tham chiếu nào bị xóa khỏi kho lưu trữ cục bộ của bạn, vì vậy bạn vẫn có tất cả 4 tài liệu tham khảo đó.
- Bạn quyết định xóa chúng và chạy
git remote prune origin
.
- git phát hiện rằng chi nhánh
feature
không còn tồn tại, vì vậy refs/remotes/origin/feature
là chi nhánh cũ cần được loại bỏ.
- Bây giờ bạn có 3 tài liệu tham khảo, bao gồm
refs/heads/feature
, vì git remote prune
không xóa bất kỳ tham chiếu refs/heads/*
nào.
Có thể xác định các nhánh địa phương, được liên kết với các nhánh theo dõi từ xa, theo thông số cấu hình branch.<branch_name>.merge
. Tham số này không thực sự cần thiết cho bất cứ điều gì để làm việc (có thể ngoại trừ git pull
), do đó, nó có thể bị thiếu.
(cập nhật với ví dụ & thông tin hữu ích từ bình luận)
để tìm ra những chi nhánh sẽ được gỡ bỏ, bạn có thể làm 'git chương origin' từ xa và tìm kiếm bất kỳ chi nhánh đánh dấu 'stale' –