Nói ngắn gọn;
- Làm cách nào để xóa nhiều điều khiển từ xa đã hợp nhất từ xa?
Thêm nền tảng;
Tôi có một repo git với hàng chục điều khiển từ xa đã được hợp nhất thành chính. Tôi có thể xóa từng điều khiển từ xa này bằng cách sử dụng:
git push --delete origin myBranch-1234
Tuy nhiên, đây là một quá trình chậm và tẻ nhạt cho tất cả các điều khiển từ xa. Vì vậy, tôi đang thử lệnh này:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
liệt kê tất cả các điều khiển từ xa đã hợp nhất.
grep origin
yêu cầu lệnh bao gồm điểm gốc.
grep -v master
cho lệnh loại trừ cái chính.
xargs git push origin --delete
ra lệnh xóa danh sách điều khiển từ xa.
Tất cả cùng nhau, tôi hy vọng điều này sẽ thu thập tất cả các điều khiển từ xa đã hợp nhất và xóa chúng.
Khi tôi chạy lệnh trên, tôi nhận được thông tin sau cho mọi điều khiển từ xa đã hợp nhất;
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
Tuy nhiên, những điều khiển từ xa này vẫn tồn tại và tôi có thể kiểm tra từng điều khiển trong số đó. Nhiều trang web và mọi người khuyên tôi nên chạy git fetch --prune
để làm sạch các tài liệu tham khảo bị thiếu. Điều này không có gì vì tất cả các điều khiển từ xa này đều tồn tại.
Vì vậy, tôi hỏi bạn, trao đổi ngăn xếp thân yêu;
- Tại sao tôi có thể xóa một điều khiển từ xa mà không xóa nhiều điều khiển?
- Lệnh của tôi có đúng không?
Tôi nghĩ rằng tôi đang thiếu một cái gì đó nhỏ. Mỗi khi tôi nghiên cứu điều này, có vẻ như tôi đang làm điều này một cách chính xác, nhưng tôi đang gặp các lỗi ở trên.
--prune
? Theo tôi đó là khá gây hiểu lầm