2010-05-24 32 views
29
$ git branch -a 
* SocialAct 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/SocialAct 
    remotes/origin/social 

Tôi muốn xóa các chi nhánh từ xa "điều khiển từ xa/gốc/xã hội", và áp dụng folloing lệnh:Không thể xóa một chi nhánh từ xa tạo ra vô

$ git branch -d -r origin/social 
Deleted remote branch origin/social (was 26f6f61). 

Nhưng tôi không có ý tưởng làm thế nào để mang lại những thay đổi này từ xa để các nhánh bị xóa khỏi nguồn gốc và mọi người có thể thấy những thay đổi. Tôi đã thử git push nhưng điều đó không hoạt động

Bất kỳ trợ giúp nào.

Trả lời

-3

Xóa các nhánh từ xa được mô tả chi tiết hơn here.

7

git push origin :social
Nhưng bạn cũng cần phải xóa cục bộ, trước hoặc sau.

+1

Cảm ơn. Trên thực tế tôi nhận thấy giải pháp này và đã thử trước đó. Nhưng điều này cho phép lỗi sau ... $ git push origin: heads/socail Nhập cụm mật khẩu cho khóa '/h/.ssh/id_rsa': lỗi: không thể đẩy tới đích không đủ tiêu chuẩn: heads/socail Đích refspec không khớp với ref hiện có trên điều khiển từ xa cũng không phải bắt đầu với refs/và chúng tôi không thể đoán tiền tố dựa trên ref nguồn. lỗi: không thể đẩy một số thay đổi thành '[email protected]' – Himel

+0

Tôi đã xóa cục bộ trước tiên, với lệnh: $ git branch -d -r origin/social hoặc, tôi đã làm sai? – Himel

+0

Việc bạn xóa cục bộ hay không không quan trọng, bạn có nhận thấy ví dụ cuối cùng của bạn có một xã hội đánh máy/xã hội không? –

45

Tôi có lỗi này (từ trên cao):

Thanks. Actually I noticed this solution and tried earlier. But this gives following error... $ git push origin :heads/socail Enter passphrase for key '/h/.ssh/id_rsa': error: unable to push to unqualified destination: heads/socail The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to '[email protected]' – Himel May 24 '10 at 9:37

Nó dường như đã nhận được bối rối về việc có hay không tôi đã thực sự xóa nó từ xa. Tôi đã làm việc xung quanh nó như vậy:

git push origin HEAD:branch_to_delete 

git push origin :branch_to_delete 

Điều đó có hiệu quả đối với tôi. Sử dụng: git phiên bản 1.7.3.1.msysgit.0.

+44

Có vẻ như chi nhánh đã bị xóa. git pull sẽ không xóa các nhánh bị xóa từ xa, bạn phải sử dụng prune: git remote prune origin - http://stay-calm.blogspot.com/2009/02/git-prune-to-remove-old-remote-tracking .html – Josh

+4

Nhận xét ở trên tôi phải là câu trả lời được đánh giá cao nhất tại đây. Tất nhiên phương pháp của Nathan hoạt động, nhưng nó giấu đi sai lầm thực sự ở đây. – fforw

7

Như được đề cập bởi @Josh trong nhận xét về Nathan McDaniel's Answer, điều này có thể do chi nhánh không còn tồn tại trong kho lưu trữ từ xa nữa. Điều này gây ra git branch -a để vẫn hiển thị chi nhánh theo origin (hoặc bất kỳ điều gì bạn đã xảy ra với tên từ xa cụ thể này), nhưng việc xóa chi nhánh trên kho lưu trữ từ xa là không thể vì nó không còn tồn tại trên điều khiển từ xa. Điều này có thể đã được gây ra bằng cách xóa các chi nhánh trên điều khiển từ xa từ một máy tính khác (trên thực tế là git pullgit fetch không loại bỏ các tham chiếu đến các chi nhánh từ xa đã bị xóa khỏi kho từ xa).

Việc sửa chữa

Đơn giản chỉ cần loại bỏ tất cả các chi nhánh từ xa theo dõi đã được loại bỏ khỏi kho lưu trữ từ xa với git remote prune:

git remote prune REMOTENAME 

Ví dụ, nếu tên điều khiển từ xa của bạn là origin (khả năng), các lệnh trên sẽ trông giống như:

git remote prune origin 

Từ tài liệu được cung cấp kèm theo git:

git remote prune [-n | --dry-run] <name>

Deletes all stale remote-tracking branches under <name> . These stale branches have already been removed from the remote repository referenced by <name> , but are still locally available in "remotes/".

With --dry-run option, report what branches will be pruned, but do not actually prune them.

1

Lệnh dưới đây sẽ xóa các chi nhánh theo dõi từ xa nhưng không phải là chi nhánh mà tồn tại trên xa

$ git branch -d -r origin/social 
Deleted remote branch origin/social (was 26f6f61). 

Để xóa chi nhánh từ xa:

git push origin :social 

này sẽ tự động xóa các theo dõi từ xa chi nhánh tức là điều khiển từ xa/nguồn gốc/xã hội.

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