2013-07-09 24 views
11

Tôi biết điều này đã được đề cập trước đó, nhưng tôi đã thử những điều sau đây và dường như không thể xóa nhánh từ xa.Làm thế nào để xóa một nhánh từ xa bằng Git?

[email protected]:~/workspace/3DOD_VARIANCE$ git branch -a 
* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/multi_gauss_at_nodes 
    remotes/origin/old-state-with-mean-deviation-from-centre 
    remotes/origin/variance-branch 


[email protected]:~/workspace/3DOD_VARIANCE$ git branch -r -d origin/old-state-with-mean-deviation-from-centre Deleted remote branch origin/old-state-with-mean-deviation-from-centre (was 0ed90b2). 


Fetching origin 
From https://bitbucket.org/alykhantejani/3dobjectdetection 
* [new branch]  old-state-with-mean-deviation-from-centre -> origin/old-state-with-mean-deviation-from-centre 

Như bạn có thể thấy chi nhánh đã được tìm nạp lại. Bất kỳ ý tưởng những gì tôi đang làm sai?

Ngoài ra, như một lưu ý phụ, có cách nào để tôi kiểm tra xem chi nhánh này đã được hợp nhất lại vào trang cái trước khi tôi xóa không?

+1

thể trùng lặp của [Làm thế nào để xóa một Git chi nhánh cả ở địa phương và trong GitHub?] (Http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and-in-github) – Livius

+0

@Livius Hi , vâng tôi đã nhắc đến câu hỏi này trước, nhưng không có may mắn – Aly

+0

"Không may mắn" không phải là một báo cáo lỗi hữu ích. Ngoài ra tại sao câu hỏi của bạn không nói rằng bạn đã thử giải pháp được cung cấp ở đó? – Chronial

Trả lời

17

Lệnh push đầy đủ như sau

git push <remote name> <local branch>:<remote branch> 

Chỉ cần gửi "n o chi nhánh ở tất cả" đến máy chủ từ xa như vậy:

git push origin :old-state-with-mean-deviation-from-centre 

Đối với sidenote: git ngăn cản bạn xóa chi nhánh chưa được sáp nhập khi bạn sử dụng 'git branch -d' (và cho bạn biết để sử dụng - D nếu bạn thực sự chắc chắn để xóa nó anyway).

Cũng cần chú ý các git branch -d -r <branch name> xóa các tài liệu tham khảo trong thư mục .git của bạn (và không phải là chi nhánh thực nằm trên máy chủ từ xa), đó là lý do tại sao một mới lấy sẽ tái tạo nó

+0

Cảm ơn, điều này đã giải quyết được vấn đề. Xin vui lòng bạn có thể nhấn mạnh rằng nguồn gốc/vòng loại là không cần thiết trên tên chi nhánh từ xa vì điều này đã làm cho nó thất bại đối với tôi. – Aly

+1

tất cả những gì bạn có thể làm với lệnh "nhánh" liên quan đến kho lưu trữ cục bộ của bạn, tức là thư mục .git. 'git branch -d -r origin/master' liên quan đến tệp .git/refs/remotes/origin/master (có chứa sha1) sẽ bị xóa, nhưng không phải là tệp trên máy chủ (vì không có chi nhánh nào được đặt tên là" origin/master "viết tắt của một phần tên chi nhánh). nếu bạn gõ 'git push: origin/old-branch', nó sẽ cố gắng loại bỏ nhánh" origin/old-branch "(lấy gốc làm namespace) không tồn tại. – Asenar

18

Để xóa một nhánh chạy từ xa sau:

git push origin :branch-to-delete 

Bí quyết là ở ruột

+0

bất kỳ ý tưởng nào về cách kiểm tra xem nhánh này đã được hợp nhất vào trang cái trước khi tôi xóa chưa? – Aly

+0

git branch --contains that-branch. Nó sẽ cung cấp cho u danh sách các chi nhánh, có chứa chi nhánh đó, Nếu nhánh ur nằm trong danh sách, bạn có thể xóa nó. – grafa

+0

Đã thử lệnh trên và nhận các thông tin sau: không thể đẩy đến đích không đủ tiêu chuẩn: origin/old-state-with-mean-deviation-from-center Đích refspec không khớp với ref hiện có trên điều khiển từ xa hoặc bắt đầu với refs/ – Aly

2

thử

git push origin :remote_branch_to_be_deleted 
Các vấn đề liên quan