Câu hỏi Làm thế nào để xóa một thẻ từ xa git?


Làm thế nào để bạn xóa một thẻ git đã được đẩy?


2135
2018-03-29 23:41


gốc




Các câu trả lời:


Bạn chỉ cần đẩy tham chiếu 'trống' vào tên thẻ từ xa:

git push origin :tagname

Hoặc, rõ ràng hơn, sử dụng --delete tùy chọn (hoặc -d nếu phiên bản git của bạn cũ hơn 1.8.0):

git push --delete origin tagname

Nếu bạn cũng cần xóa thẻ cục bộ, hãy sử dụng:

git tag --delete tagname

Lý lịch

Đẩy một chi nhánh, thẻ, hoặc ref khác đến một kho lưu trữ từ xa liên quan đến việc xác định "đẩy nơi, nguồn gì, đích đến nào?"

git push where-to-push source-ref:destination-ref

Một ví dụ thế giới thực nơi bạn đẩy nhánh chính của bạn đến nhánh master của nguồn gốc là:

git push origin refs/heads/master:refs/heads/master

Do đường dẫn mặc định, có thể được rút ngắn thành:

git push origin master:master

Thẻ hoạt động theo cùng một cách:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

Điều này cũng có thể được rút ngắn thành:

git push origin release-1.0:release-1.0

Bằng cách bỏ qua ref nguồn (phần trước dấu hai chấm), bạn đẩy 'không có gì' đến đích, xóa ref trên đầu cuối từ xa.


3520
2018-03-29 23:45



Đúng. Và bằng cách này, nó cũng hoạt động cho các chi nhánh. - Joost Diepenmaat
1 cho cả việc trả lời câu hỏi và giải thích về trường hợp chung và nêu chi tiết cú pháp không được rút gọn - Peter Host
Và chỉ trong trường hợp ai đó tự hỏi làm thế nào để xóa nhiều thẻ tại một thời điểm bạn đơn giản danh sách chúng bằng cách sử dụng khoảng trắng, ví dụ: git push --delete origin tag1 tag2. Tương tự là hợp lệ cho xóa thẻ cục bộ git tag -d tag1 tag2 - dVaffection
Nếu tên thẻ va chạm với tên chi nhánh, bạn có thể kết thúc bằng việc xóa chi nhánh của bạn. Ha-ha. Xem câu trả lời thứ hai - nó sinh thái hơn - zuba
@dVaffection Tôi ước gì tôi đọc nhận xét của bạn trước xóa 12 thẻ riêng biệt ... - BadHorsie


Một cách đơn giản hơn là

git push --delete origin YOUR_TAG_NAME

Cú pháp dấu hai chấm tiền tố IMO hơi lạ trong trường hợp này


246
2017-10-09 00:47



Tôi nghĩ rằng đây là cách thích hợp ... cú pháp khác trông giống như hacks với tôi. - Luigi R. Viggiano
Vâng, điều này rất đơn giản và hiệu quả. Mặc dù tôi sẽ làm rõ câu trả lời bằng cách xác định phần biến là gì: git push --delete origin "TAGNAME", trong đó TAGNAME là tên của thẻ gốc. - Teemu Leisti
Những công việc này. Một bổ sung: Nếu bạn có một chi nhánh và một thẻ có cùng tên, bạn có thể đặt từ đó tag trước tên thẻ của bạn để đảm bảo bạn nhận được thẻ chứ không phải chi nhánh. - andypaxo
@andypaxo Lệnh nào là refspecs, cách chính xác sẽ là tiền tố các thẻ với refs/tags/, như thế này: refs/tags/v2.3.1. - p3lim


Nếu bạn có thẻ từ xa v0.1.0 để xóa và điều khiển từ xa của bạn origin, sau đó chỉ cần:

git push origin :refs/tags/v0.1.0

Nếu bạn cũng cần xóa thẻ cục bộ:

git tag -d v0.1.0

Xem Adam Francocâu trả lời của để giải thích về Git bất thường : cú pháp để xóa.


134
2017-07-21 16:14



điều này cũng làm việc với jgit. : viết tắt của thẻ không hoạt động với jgit - rynop
tôi đã nhận fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 ...? - Chaim Eliyah
@ChaimEliyah bạn có một dấu gạch chéo hàng đầu, có thể đó là vấn đề của bạn - Joffrey
Câu trả lời tốt hơn, vì điều này cũng hoạt động nếu bạn có một chi nhánh và một thẻ được gọi là giống nhau. - Erik A. Brandstadmoen


Xóa tất cả các thẻ cục bộ và nhận danh sách các thẻ từ xa:

git tag -l | xargs git tag -d
git fetch

Xóa tất cả thẻ từ xa

git tag -l | xargs -n 1 git push --delete origin

Xóa các thẻ cục bộ

git tag -l | xargs git tag -d

72
2018-04-02 02:26



Làm thế nào để loại bỏ tất cả các thẻ từ repos địa phương và từ xa. Đây là những gì tôi đang tìm kiếm, cảm ơn! - Jorge Orpinel
git fetch, xóa từ xa và sau đó dọn sạch người dân địa phương, làm việc rất đẹp! - DiegoRBaquero
chậm, nhưng đơn giản nhất - Lucent Fox


Để xóa thẻ khỏi kho lưu trữ từ xa:

git push --delete origin TAGNAME

Bạn cũng có thể muốn xóa thẻ cục bộ:

git tag -d TAGNAME

26
2017-09-04 10:30





Từ thiết bị đầu cuối của bạn, hãy làm điều này:

git fetch
git tags
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

Bây giờ đi đến Github.com và làm mới, họ biến mất.


17
2018-06-27 13:23



thẻ git không phải thẻ - DSF


Chỉ cần lưu ý rằng, nếu bạn có một chi nhánh từ xa được đặt tên như một thẻ từ xa, các lệnh này không rõ ràng:

git push origin :tagname
git push --delete origin tagname

Vì vậy, bạn phải sử dụng lệnh này để xóa thẻ:

git push origin :refs/tags/<tag>

và cái này để xóa nhánh:

git push origin :refs/heads/<branch>

Nếu không, bạn sẽ nhận được một lỗi như thế này:

error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'

12
2018-05-05 17:28



Ngắn gọn và súc tích. Bài đăng này cùng với MeganZhou của popped ra như là câu trả lời cho lý do tại sao chúng tôi đã có vấn đề, tên chi nhánh và tagname giống hệt nhau. Tôi đã xóa thẻ cục bộ và được đẩy tới: refs / tags và tất cả đều tốt. - rwheadon


Nếu bạn đã tạo một thẻ gọi là release01 trong kho lưu trữ Git, bạn sẽ xóa nó khỏi kho lưu trữ của mình bằng cách thực hiện như sau:

git tag -d release01 
git push origin :refs/tags/release01 

Để loại bỏ một từ một kho Mercurial:

hg tag --remove featurefoo

Vui lòng tham khảo https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54





Xóa thẻ cục bộ '12345'

git tag -d 12345

Xóa thẻ từ xa '12345' (ví dụ: phiên bản GitHub)

git push origin :refs/tags/12345

cách tiếp cận khác

git push --delete origin tagName
git tag -d tagName

enter image description here


5
2018-03-23 09:50





Các câu trả lời khác chỉ ra cách thực hiện điều này, nhưng bạn nên ghi nhớ hậu quả vì đây là một kho lưu trữ từ xa.

Trang người dùng git tag, trong Đang gắn thẻ lại phần, có một lời giải thích tốt về cách lịch sự thông báo cho người dùng khác của repo từ xa của sự thay đổi. Họ thậm chí còn đưa ra một mẫu thông báo hữu ích để liên lạc cách người khác nhận được những thay đổi của bạn.


4
2018-03-04 17:04