git branch -d
(hoặc -D
) cho phép nhiều tên chi nhánh, nhưng đó là một chút khó khăn để tự động cung cấp " tất cả các chi nhánh địa phương không bao gồm chi nhánh tôi đang thực hiện "mà không cần viết ít nhất một chút mã.
Phương pháp "tốt nhất" (chính thức đúng) là sử dụng git for-each-ref
để có được những tên chi nhánh:
git for-each-ref --format '%(refname:short)' refs/heads
nhưng sau đó nó thậm chí còn khó khăn hơn để tìm ra những chi nhánh bạn đang ở trên (git symbolic-ref HEAD
là "chính thức chính xác "phương pháp này, nếu bạn muốn viết một kịch bản ưa thích).
Thuận tiện hơn, bạn có thể sử dụng git branch
, in tên chi nhánh địa phương của bạn trước hai dấu cách hoặc (cho nhánh hiện tại) bằng dấu hoa thị *
. Vì vậy, hãy chạy này thông qua một cái gì đó để loại bỏ các phiên bản *
và bạn đang trái với những cái tên không gian tách nhánh, sau đó bạn có thể vượt qua để git branch -d
:
git branch -d $(git branch | grep -v '^*')
hay:
git branch | grep -v '^*' | xargs git branch -d
Lưu ý rằng chữ thường -d
sẽ không xóa chi nhánh "chưa được hợp nhất hoàn toàn" (xem tài liệu). Sử dụng -D
sẽ xóa các nhánh đó, ngay cả khi điều này làm cho các cam kết trở thành "bị mất"; sử dụng điều này với sự cẩn thận tuyệt vời, vì điều này sẽ xóa các chi nhánh reflogs là tốt, do đó, thông thường "phục hồi từ vô tình xóa" công cụ không hoạt động hoặc.
có thể trùng lặp của [Xóa tất cả các nhánh git cục bộ] (http://stackoverflow.com/questions/10610327/delete-all-local-git-branches) –
có thể trùng lặp của [Cách xóa tất cả các nhánh git cục bộ nhưng giữ master với một dòng lệnh?] (http://stackoverflow.com/questions/25112684/how-to-remove-all-local-git-branches-but-keep-master-with-one-command-line) – random
Có thể bản sao của [Làm thế nào tôi có thể xóa tất cả các chi nhánh git đã được sáp nhập?] (https://stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-have-been-merged) –