2012-01-27 32 views
5

Tôi đã tạo một chi nhánh, làm việc trên đó, hợp nhất nó với nhánh cơ sở và bây giờ muốn xóa nó. Nhánh này cũng được tạo trên máy chủ git remote.git xóa nhánh phát triển khỏi máy chủ git từ xa

Bây giờ, khi tôi chạy nhánh nhánh git, nó đã xóa nó và tôi đã đẩy nó. Nhưng tôi vẫn thấy chi nhánh trên máy chủ git remote.

Tôi đã gặp sự cố tương tự trước đó khi tạo chi nhánh này và tôi không thể nhìn thấy nó trên máy chủ git từ xa.

Tôi thậm chí có thể thanh toán từ chi nhánh này.

Tôi có thiếu gì ở đây không?

Trả lời

7

Để loại bỏ chi nhánh trên remote

git push remote :refs/heads/development 
+3

Hoặc tương đương: 'git push remote: development' – Koraktor

+0

@Koraktor, vâng, điều đó sẽ làm, trừ khi ref ở đâu đó. –

3

Bạn xóa các chi nhánh từ xa với các lệnh phức tạp sau:

git push origin :newfeature 

Bạn có thể muốn cập nhật chỉ số của bạn, vì vậy các chi nhánh theo dõi được gỡ bỏ như well:

git fetch origin --prune 
9

Để mở rộng các câu trả lời này, mỗi nhánh cơ bản tồn tại ở ba nơi:

  • Trên máy chủ từ xa, ví dụ: origin/foo
  • bản sao của bạn địa phương của origin/foo (được cập nhật thông qua git fetch)
  • Các chi nhánh địa phương foo (được cập nhật thông qua git merge origin/foo sau git fetch - hoặc phổ biến hơn, cả hai đều thực hiện với nhau thông qua git pull).

git branch -d xóa cuối cùng của ba số này, cụ thể là chi nhánh địa phương. git branch -d -r sẽ xóa bản sao của bạn của chi nhánh từ xa (hoặc bạn có thể chạy git remote prune origin sau khi xóa chi nhánh địa phương).

Để xóa chi nhánh trên máy chủ từ xa, bạn phải sử dụng git push. Cú pháp cũ cho điều này là git push origin :branchname. Điều này là do cú pháp là localref:remoteref, ví dụ: có thể đẩy chi nhánh cục bộ trên máy của bạn đến một chi nhánh từ xa có tên khác, ví dụ: git push origin localbranch:remotebranch. Nếu bạn để trống phần localbranch, bạn đang yêu cầu git đẩy không có gì vào nhánh từ xa, xóa nó.

Nếu điều đó gây nhầm lẫn, đừng lo lắng, các nhà phát triển git đồng ý với bạn. Phiên bản mới hơn có tùy chọn --delete để git push origin --delete branchname thực hiện tương tự như git push origin :branchname, nhưng mục đích của nó rõ ràng hơn nhiều.

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