2013-07-19 37 views
15

Tôi muốn xóa một số nhánh từ xa trong kho dự án của mình. Tôi đã chạy lệnh tiếp theo:Xóa các chi nhánh ở xa trong Git

git push origin :name_of_branch 

và khi tôi liệt kê các chi nhánh từ xa với

git branch -r 

chi nhánh mà tôi đã xóa không xuất hiện, nhưng một đối tác của tôi chạy

git fetch 

và sau

git branch -r 

và trong danh sách, chi nhánh name_of_branch mà tôi đã xóa, vẫn nằm trong danh sách. Tuy nhiên, khi ông cố gắng để xóa các chi nhánh với

git push origin :name_of_branch 

Ông nhận được thông báo tiếp theo:

error: unable to delete 'name_of_branch': remote ref does not exist 
error: failed to push some refs to 'the_name_of_the_repository' 

Làm thế nào tôi có thể xóa các chi nhánh hoàn toàn danh sách?

+0

Bản sao của [Xóa chi nhánh Git cả cục bộ lẫn từ xa?] (Http://stackoverflow.com/q/2003505/456814). –

Trả lời

23

Điều này xảy ra vì khi đối tác này của bạn chạy git fetch, việc xóa chi nhánh không được "áp dụng" vào kho lưu trữ của mình. fetch chỉ cập nhật và thêm chi nhánh.

Chúng có thể chạy git remote prune origin để cắt bỏ các nhánh từ xa trong danh sách của chúng không còn tồn tại trong kho lưu trữ ngược dòng nữa.

+4

FYI, 'git remote prune' có phần bị phản đối vì lợi ích của' git fetch --prune' hoặc 'git fetch -p'. Xem [Ghi chú phát hành phiên bản 1.6.6 Git] (https://github.com/git/git/blob/v2.0.0/Documentation/RelNotes/1.6.6.txt # L162-L166): "[' git fetch --prune' làm cho] 'git remote update' và' git remote prune' ít cần thiết hơn (không có kế hoạch xóa 'remote update' cũng không' remote prune', mặc dù). " –

9

git fetch --prune <remote> có thể được sử dụng để xóa tất cả các chi nhánh theo dõi từ xa đang theo dõi các chi nhánh không còn tồn tại trong kho lưu trữ từ xa (tức là chúng bị xóa ở xa). Từ official Linux Kernel Git documentation for fetch:

-p

--prune

Sau khi lấy, loại bỏ bất kỳ chi nhánh từ xa theo dõi mà không còn tồn tại trên điều khiển từ xa.

Bạn cũng có thể điều khiển từ xa đã lỗi thời chi nhánh từ xa theo dõi với lệnh

git branch -D -r <remote>/<branch> 

như đã nêu trong the documentation for git branch:

Sử dụng -r cùng với -d để xóa các chi nhánh từ xa theo dõi. Lưu ý rằng chỉ có nghĩa là xóa các nhánh theo dõi từ xa nếu chúng không còn tồn tại trong kho lưu trữ từ xa hoặc nếu git fetch được định cấu hình không tìm nạp lại chúng.

Các vấn đề liên quan