2011-11-01 39 views
19

Lệnh git branch -a liệt kê một loạt các nhánh KHÔNG nằm trong kho lưu trữ và KHÔNG phải là các nhánh địa phương. Làm cách nào để xóa chúng?Xóa các chi nhánh được liệt kê theo chi nhánh git -a

* develop 
    master 
    remotes/origin/cloner 

Ví dụ, remotes/origin/cloner sử dụng để tồn tại trong repo, nhưng nó đã từ đó đã được xóa và tôi muốn nó không xuất hiện khi gõ git branch -a.

Trả lời

27

Nếu bạn có các chi nhánh từ xa theo dõi (ví dụ như origin/cloner trong trường hợp này) mà được còn sót lại sau khi chi nhánh tương ứng đã bị xóa trong kho từ xa, bạn có thể xóa tất cả các ví dụ chi nhánh từ xa theo dõi với:

 
git remote prune origin 

Các documentation for git remote giải thích điều này như sau:

Xóa tất cả các chi nhánh từ xa theo dõi cũ dưới < tên >. Các nhánh cũ đã bị xóa khỏi kho từ xa được tham chiếu bởi < tên >, nhưng vẫn có sẵn cục bộ trong "điều khiển từ xa/< tên >".

Với tùy chọn --dry-run, báo cáo nhánh nào sẽ được cắt tỉa, nhưng không thực sự cắt tỉa chúng.

+4

Đó là wort h mở rộng về điều này, có lẽ chỉ bằng cách trích dẫn và liên kết đến tài liệu. –

+0

Cảm ơn bạn, Mark, vì đã chỉnh sửa tuyệt vời! –

-5

Cũng có thể xảy ra việc tham chiếu kho từ xa đã bị xóa khỏi bản sao cục bộ, nhưng vẫn xuất hiện trong đầu ra của lệnh 'git branch -a'. Trong mọi trường hợp, bạn luôn có thể ngăn chặn bất kỳ tài liệu tham khảo chỉ đơn giản bằng cách xóa các tập tin tương ứng:

$ rm -f .git/refs/remotes/cloner 
$ rm -rf .git/refs/remotes/deprecated_remote 
+0

Bạn nên xóa trực tiếp các tệp từ dưới '.git' thay vì sử dụng các lệnh sứ để làm như vậy. –

+0

Git khá mạnh mẽ. Nó thường rất tiện dụng để chỉnh sửa tệp .git/config, ví dụ để thêm theo dõi cho một nhánh cụ thể hoặc để thay đổi URL của một kho lưu trữ từ xa. Bằng cách nhìn trực tiếp dưới mui xe, một khi có thể hiểu dễ dàng hơn cách Git hoạt động, và nhận ra rằng nó là ma thuật như nó xuất hiện lần đầu tiên. Vì vậy, tôi sẽ không khuyên mọi người nên chỉnh sửa các tệp Git dưới mui xe, nhưng tôi khuyên bạn nên ít nhất có một loot ở những tệp đó. Tại mininum, nó rất có tính hướng dẫn. –

3

Để xóa một chi nhánh đó là không cần thiết nữa, bạn có thể sử dụng lệnh sau:

git branch -d -r origin/cloner 
+1

Điều này cần phải là 'git branch -d -r origin/cloner', vì' origin/cloner' là một nhánh theo dõi từ xa. –

0

Bạn cũng có làm

git push origin :cloner 

Để loại bỏ các chi nhánh từ xa không mong muốn

+0

Trong trường hợp này, nhánh 'cloner' đã bị xóa khỏi kho lưu trữ từ xa, do đó điều này sẽ tạo ra lỗi. Câu hỏi đặt ra là hỏi làm thế nào để loại bỏ nhánh theo dõi từ xa 'origin/cloner', còn sót lại sau khi ai đó đã xóa' cloner' trong 'origin'. –

+0

Tôi hiểu. Sau đó, sẽ không một git lấy chỉ làm mới danh sách chi nhánh từ xa? – Patrick