วิธีลบแท็กระยะไกล


คำตอบ:


5752

คุณเพียงแค่ต้องผลักดันการอ้างอิง 'ว่าง' กับชื่อแท็กระยะไกล:

git push origin :tagname

หรือให้ใช้--deleteตัวเลือกอย่างชัดเจนมากขึ้น(หรือ-dหากเวอร์ชัน git ของคุณเก่ากว่า 1.8.0):

git push --delete origin tagname

โปรดทราบว่า git มีแท็กเนมสเปซและเนมสเปซของสาขาดังนั้นคุณอาจใช้ชื่อเดียวกันสำหรับสาขาและสำหรับแท็ก หากคุณต้องการให้แน่ใจว่าคุณไม่สามารถลบสาขาแทนแท็กโดยไม่ได้ตั้งใจคุณสามารถระบุการอ้างอิงแบบเต็มซึ่งจะไม่ลบสาขา:

git push origin :refs/tags/tagname

หากคุณต้องการลบแท็กท้องถิ่นให้ใช้:

git tag --delete tagname

พื้นหลัง

การผลักสาขาแท็กหรือการอ้างอิงอื่น ๆ ไปยังที่เก็บระยะไกลเกี่ยวข้องกับการระบุ "ว่า repo แหล่งข้อมูลใดปลายทางใด

git push remote-repo source-ref:destination-ref

ตัวอย่างโลกแห่งความจริงที่คุณผลักสาขาหลักของคุณไปยังสาขาต้นแบบของต้นกำเนิดคือ:

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

ซึ่งเนื่องจากเส้นทางเริ่มต้นสามารถย่อให้เป็น:

git push origin master:master

แท็กทำงานในลักษณะเดียวกัน:

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

ซึ่งสามารถย่อให้เป็น:

git push origin release-1.0:release-1.0

ด้วยการละเว้นการอ้างอิงแหล่งที่มา (ส่วนก่อนโคลอน) คุณจะกด 'ไม่มีอะไร' ไปยังปลายทางการลบการอ้างอิงที่ปลายรีโมต


187
+1 สำหรับทั้งการตอบคำถามและอธิบายกรณีทั่วไปและรายละเอียดความหมายของไวยากรณ์ที่ย่อ
Peter Host

77
git push --delete origin tag1 tag2และในกรณีที่มีคนสงสัยว่าจะลบแท็กหลายในเวลาที่คุณรายการที่เรียบง่ายพวกเขาใช้พื้นที่สีขาวเช่น การลบแท็กในเครื่องเดียวกันนั้นสามารถใช้ได้git tag -d tag1 tag2
dVaffection

8
หากชื่อแท็กชนกับชื่อสาขาคุณอาจท้ายด้วยการลบสาขาของคุณ ฮ่า ดูคำตอบที่สอง - เป็นระบบนิเวศน์มากกว่า
zuba

1
@EmmaHe A tagเชื่อมต่อกับการส่งคำสั่งเดียวเท่านั้น เนื่องจากชื่อสาขานั้นไม่เกี่ยวข้อง
cb2

1
นอกจากนี้ยังเป็นที่น่าสนใจที่จะรู้ว่าgit tag -d `git tag`จะลบแท็กท้องถิ่นทั้งหมด เช่นเดียวกับการgit push --delete origin `git tag`สมมติว่าคุณดึงแท็กระยะไกลในเครื่อง นั่นเป็นประโยชน์ในสภาพแวดล้อมการทดสอบ
DarkFranX

382

วิธีที่ตรงไปตรงมามากขึ้นคือ

git push --delete origin YOUR_TAG_NAME

ไวยากรณ์ของโคลอนของ IMO ที่นำหน้าเป็นสิ่งที่แปลกเล็กน้อยในสถานการณ์นี้


4
ฉันคิดว่านี่เป็นวิธีที่เหมาะสม ... ไวยากรณ์อื่น ๆ ดูเหมือนแฮ็คกับฉัน
Luigi R. Viggiano

11
ใช่นี่เป็นเรื่องง่ายและใช้งานได้ แม้ว่าฉันจะอธิบายคำตอบให้ชัดเจนด้วยการระบุว่าอะไรคือส่วนของตัวแปร: git push --delete origin "TAGNAME"โดย TAGNAME เป็นชื่อของแท็กดั้งเดิม
Teemu Leisti

12
วิธีนี้ใช้ได้ผล อีกหนึ่ง: ถ้าคุณมีสาขาและแท็กที่มีชื่อเดียวกันคุณสามารถใส่คำtagก่อนชื่อแท็กของคุณเพื่อให้แน่ใจว่าคุณได้รับแท็กไม่ใช่สาขา
andypaxo

9
@andypaxo สิ่งที่คำสั่งจะเป็น refspecs, วิธีที่ถูกต้องจะได้รับการ prefixing แท็กด้วยเช่นนี้refs/tags/ refs/tags/v2.3.1
p3lim

ฉันมีชื่อแท็ก 'ไม่ดี' ที่สร้างขึ้นบนรีโมตเซิร์ฟเวอร์อย่างใดซึ่งมีอักขระพิเศษดังนั้นฉันจึงไม่สามารถซิงค์กับสิ่งนั้นได้ดังนั้นเพียงลบออกด้วยคำแนะนำของคุณ: git push --delete origin "service - <default> - 151 "ไม่สามารถลบออกได้โดยไม่ต้องใช้ Intellij ไม่ใช่ที่เก็บซ่อนไม่ใช่กับต้นทางต้นไม้ ขอบคุณมาก!
Dmitri Algazin

215

หากคุณมีแท็กรีโมตที่v0.1.0จะลบและรีโมตของคุณเป็นoriginเพียง:

git push origin :refs/tags/v0.1.0

หากคุณต้องลบแท็กในเครื่องด้วย:

git tag -d v0.1.0

ดูคำตอบของAdam Francoสำหรับคำอธิบายของ:ไวยากรณ์ที่ผิดปกติของ Git สำหรับการลบ


2
สิ่งนี้ใช้ได้กับ jgit ด้วย แท็
กช

ฉันได้fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1...
ไคม์เอลียาห์

3
@ChaimEliyah คุณมีฟันชั้นนำบางทีนั่นอาจเป็นปัญหาของคุณ
Joffrey

5
คำตอบที่ดีกว่าเช่นนี้ใช้ได้ถ้าคุณมีสาขาและแท็กที่เรียกว่าเหมือนกัน
Erik A. Brandstadmoen

เพียงแค่:tagnameควรจะทำงานสำหรับการลบระยะไกล
คิวเมนตัส

106

ลบแท็กท้องถิ่นทั้งหมดและรับรายการของแท็กระยะไกล :

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

ลบแท็กระยะไกลทั้งหมด

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

ทำความสะอาดแท็กท้องถิ่น

git tag -l | xargs git tag -d

2
วิธีลบแท็กทั้งหมดออกจาก repos ภายในและระยะไกล นี่คือสิ่งที่ฉันกำลังมองหาขอบคุณ!
Jorge Orpinel

เรียก git ลบจากระยะไกลแล้วทำความสะอาดไอเดียทำงานอย่างสวยงาม!
DiegoRBaquero

ช้า แต่ตรงไปตรงมาที่สุด
Lucent Fox

33

วิธีลบแท็กออกจากที่เก็บรีโมต:

git push --delete origin TAGNAME

คุณอาจต้องการลบแท็กในเครื่อง:

git tag -d TAGNAME

ดังนั้นหนึ่งบรรทัดที่ต้องทำทั้งสอง:git push --delete origin TAGNAME && git tag -d TAGNAME
sakurashinken

25

จากเทอร์มินัลของคุณทำสิ่งนี้:

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

ตอนนี้ไปที่ Github.com และรีเฟรชพวกเขาหายไป


3
แท็ก git ไม่แท็ก
DSF

23
git tag -d your_tag_name
git push origin :refs/tags/your_tag_name
  1. บรรทัดแรกลบออกyour_tag_nameจากrepo ท้องถิ่น
  2. บรรทัดที่สองลบออกyour_tag_nameจากrepo ระยะไกล
  3. กดปุ่มยกเลิกร่างในส่วนGitHub Releaseของคุณ

ป้อนคำอธิบายรูปภาพที่นี่


2
ในขณะที่คำสั่งนี้อาจตอบคำถาม แต่มีบริบทเพิ่มเติมเกี่ยวกับสาเหตุและ / หรือวิธีการที่รหัสนี้ตอบคำถามช่วยปรับปรุงมูลค่าระยะยาว วิธีการตอบ
Popo

20

ลบแท็กท้องถิ่น '12345'

git tag -d 12345

ลบแท็กระยะไกล '12345' (เช่น; รุ่น GitHub ด้วย)

git push origin :refs/tags/12345

วิธีการทางเลือก

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

ป้อนคำอธิบายรูปภาพที่นี่


15

เพียงสังเกตว่าหากคุณมีชื่อสาขาระยะไกลเป็นแท็กระยะไกลคำสั่งเหล่านี้จะคลุมเครือ:

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

ดังนั้นคุณต้องใช้คำสั่งนี้เพื่อลบแท็ก:

git push origin :refs/tags/<tag>

และอันนี้เพื่อลบสาขา:

git push origin :refs/heads/<branch>

ถ้าไม่คุณจะได้รับข้อผิดพลาดเช่นนี้:

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

สั้นและกระชับ โพสต์นี้พร้อมกับ MeganZhou ผุดออกมาเพื่อเป็นคำตอบว่าทำไมเราถึงมีปัญหา branchname และ tagname เหมือนกัน ฉันลบแท็กท้องถิ่นแล้วผลักไปที่: refs / tags และทั้งหมดนั้นก็ดี
rwheadon

12

วิธีเร็วขึ้น 100x สำหรับแท็กระยะไกลหลายพันรายการ

หลังจากอ่านคำตอบเหล่านี้ขณะที่ต้องการลบแท็กมากกว่า 11,000 แท็กฉันเรียนรู้วิธีการเหล่านี้อาศัยหรือxargsใช้เวลานานเกินไปเว้นแต่คุณจะมีเวลาเขียน

ดิ้นรนผมพบว่าทั้งสองมากวิธีที่เร็วขึ้น สำหรับทั้งคู่เริ่มต้นด้วยgit tagหรือgit ls-remote --tagsสร้างรายการแท็กที่คุณต้องการลบบนรีโมท ในตัวอย่างด้านล่างคุณสามารถละเว้นหรือแทนที่sorting_proccessing_etcด้วยgrepไอsortเอ็นtailจีไอเอ็นจีไอเอ็นจีหรือheadไอเอ็นจีที่คุณต้องการ ( เช่น grep -P "my_regex" | sort | head -n -200 ฯลฯ ):


วิธีแรกนี้เร็วที่สุดอาจเร็วกว่าการใช้ถึง 20 ถึง 100 เท่าxargsและใช้ได้กับแท็กอย่างน้อยหลายพันครั้ง

git push origin $(< git tag | sorting_processing_etc \
| sed -e 's/^/:/' | paste -sd " ") #note exclude "<" for zsh

มันทำงานอย่างไร ปกติรายการสายแยกของแท็กจะถูกแปลงเป็นบรรทัดเดียวของแท็กพื้นที่แยกแต่ละใช้ได้กับ:เพื่อ . .

tag1   becomes
tag2   ======>  :tag1 :tag2 :tag3
tag3

การใช้git pushแท็กรูปแบบนี้จะไม่ส่งสิ่งใดไปยังรีโมตอ้างอิงแต่ละรายการลบออก (รูปแบบปกติสำหรับการกดด้วยวิธีนี้คือlocal_ref_path:remote_ref_path)

วิธีที่สองแบ่งออกเป็นคำตอบแยกต่างหากที่อื่นในหน้าเดียวกันนี้


หลังจากวิธีเหล่านี้ทั้งสองคุณอาจต้องการลบแท็กท้องถิ่นของคุณด้วย นี่คือเร็วกว่ามากเพื่อให้เราสามารถกลับไปใช้xargsและgit tag -dซึ่งเพียงพอ

git tag | sorting_processing_etc | xargs -L 1 git tag -d

หรือคล้ายกับการลบระยะไกล:

git tag -d $(< git tag | sorting_processing_etc | paste -sd " ")

คุณควรแบ่งสิ่งนี้ออกเป็นคำตอบที่ต่างกันเล็กน้อย คำตอบที่มีหลายแท็กในหนึ่งบรรทัดคือคำตอบที่ถูกต้องสำหรับการลบแท็กจำนวนมากโดยไม่ต้องสงสัย จริง ๆ แล้วมันเป็นเรื่องยากเล็กน้อยที่จะหาข้อมูลนี้เกือบทุกที่อื่น แม้จะรู้ว่าสิ่งที่ฉันกำลังมองหาฉันมีเวลายากที่จะหามันในหน้าช่วยเหลือ git :) ขอชื่นชมคุณและเน้นว่าเป็นคำตอบที่ถูกต้องและย้าย GitHub API ไปยังที่อื่น และในที่สุดแท็กการลบภายในเครื่องจะทำงานร่วมกับแท็กที่มีการเว้นวรรค (กำจัดโคลอน)
CubanX

ขอบคุณสำหรับคำชมและคำแนะนำ ฉันจะแยกมันออก ฉันไม่เข้าใจความคิดเห็นของคุณเกี่ยวกับการลบแท็กท้องถิ่น ฉันไม่คิดว่าข้อมูลคำสั่งสุดท้ายของฉันใช้โคลอนใด ๆ แต่ฉันใช้งานผ่านมือถือ
TonyH

ขออภัยฉันแค่หมายถึงสิ่งที่คุณกำลังทำเพื่อลบแท็กระยะไกลทำงานร่วมกับการลบแท็กท้องถิ่นให้รายการทั้งหมดในครั้งเดียว :) เพียงแค่แทนที่จะเป็นต้นกำเนิด push git: tag1: tag2 ฯลฯ คุณจะต้องทำแท็ก git - ลบ tag1 tag2 tag3 ด้วยวิธีการที่คุณสามารถล้างข้อมูลทั้งหมดได้ อีกครั้งขอบคุณหนึ่งตัน!
CubanX

11

หากคุณใช้ SourceTree ซึ่งเป็น Git GUI ที่ยอดเยี่ยมคุณสามารถทำได้โดยไม่ต้องใช้บรรทัดคำสั่งโดยทำดังต่อไปนี้

  1. เปิดที่เก็บของคุณใน SourceTree
  2. เลือกและขยายแท็บ "แท็ก" ทางด้านซ้าย
  3. คลิกขวาที่แท็กที่คุณต้องการลบ
  4. เลือก "ลบ YOUR_TAG_NAME"
  5. ในหน้าต่างการยืนยันเลือก "ลบแท็กออกจากรีโมท"

YOUR_TAG_NAME จะถูกลบออกจากพื้นที่เก็บข้อมูลในพื้นที่ของคุณและรีโมททั้งหมด - ไม่ว่าจะเป็น GitHub, BitBucket หรือที่ใดก็ตามที่คุณแสดงรายการเป็นรีโมตสำหรับที่เก็บนั้น

นอกจากนี้หากคุณลบแท็กในเครื่อง แต่ไม่ได้อยู่ในต้นกำเนิดระยะไกลและคุณต้องการลบทุกที่ให้สร้างแท็กใหม่ที่มีชื่อเหมือนกันและแนบไว้ที่การกระทำเดียวกันกับต้นกำเนิด จากนั้นทำซ้ำขั้นตอนด้านบนเพื่อลบทุกที่


ทำงานเหมือนจับใจ ขอบคุณ!
Native_Mobile_Arch_Dev

9

หากคุณสร้างแท็กชื่อrelease01ในที่เก็บ Git คุณจะต้องลบออกจากที่เก็บของคุณโดยทำดังต่อไปนี้:

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

วิธีลบออกจากที่เก็บ Mercurial:

hg tag --remove featurefoo

โปรดอ้างอิงhttps://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


7

หากคุณใช้ PowerShell และคุณต้องการลบมันทิ้ง:

# Local tags:
git tag -l | foreach { git tag -d $_ }

# Remote tags:
git tag -l | foreach { git push --delete origin $_ }

แน่นอนคุณสามารถกรองพวกเขาก่อนที่จะลบ:

git tag -l | Where-Object { $_ -like "build-*" } | foreach { git tag -d $_ }

นั่นคือตัวอย่างที่ราบรื่นและดี regexp ขอบคุณครับที่ดี
ยูนัส

7

ตามที่ @CubanX แนะนำฉันได้แยกคำตอบนี้จากต้นฉบับของฉัน:

นี่คือวิธีการที่เร็วกว่าxargsและอาจขยายเพิ่มขึ้นหลายเท่าด้วยการปรับแต่ง มันใช้Github API , parallelโทเค็นการเข้าถึงส่วนบุคคลและการใช้ประโยชน์จากยูทิลิตี้

git tag | sorting_processing_etc | parallel --jobs 2 curl -i -X DELETE \ 
https://api.github.com/repos/My_Account/my_repo/git/refs/tags/{} -H 
\"authorization: token GIT_OAUTH_OR_PERSONAL_KEY_HERE\"  \
-H \"cache-control: no-cache\"`

parallelมีโหมดการทำงานมากมาย แต่โดยทั่วไปแล้วคำสั่งใด ๆ ที่คุณให้ไว้จะขนานกันในขณะที่อนุญาตให้คุณกำหนดขีด จำกัด จำนวนกระบวนการ คุณสามารถแก้ไข--jobs 2พารามิเตอร์เพื่อให้การทำงานเร็วขึ้น แต่ฉันมีปัญหากับการ จำกัด อัตราของ Github ซึ่งปัจจุบันอยู่ที่ 5,000 / ชม. แต่ก็ดูเหมือนว่าจะมีการ จำกัด ระยะสั้นที่ไม่มีเอกสารเช่นกัน


หลังจากนี้คุณอาจต้องการลบแท็กท้องถิ่นของคุณด้วย นี่คือเร็วกว่ามากเพื่อให้เราสามารถกลับไปใช้xargsและgit tag -dซึ่งเพียงพอ

git tag | sorting_processing_etc | xargs -L 1 git tag -d

ดูเหมือนว่าจะซับซ้อนกว่าคำตอบที่ได้รับการยอมรับ ประโยชน์คืออะไร
theUtherSide

2
หากคุณต้องการลบแท็กหลายพันแท็กความเร็วก็จะเร็วขึ้น 10-100 เท่า
TonyH

ขอบคุณสำหรับการชี้แจง OP ถามเกี่ยวกับการลบแท็กเดียว ฉันนึกไม่ออกว่าทำไมบางคนถึงใช้วิธีนี้กับแท็กเดียว บางทีคำตอบนี้อาจดีกว่าสำหรับคำถามอื่นที่เกี่ยวข้องกับการลบแท็กจำนวนมาก
theUtherSide

ฉันไม่คิดว่ามันมีอยู่ ฉันสามารถสร้างมันขึ้นมาเพื่อตอบตัวเอง คุณต้องการคิดว่าเหมาะสมหรือไม่?
TonyH

1
ฉันทำ! ฉันคิดว่ามันเป็นเรื่องธรรมดาที่นี่
theUtherSide

6

คำตอบอื่น ๆ ชี้ให้เห็นวิธีการทำสิ่งนี้ให้สำเร็จ แต่คุณควรคำนึงถึงผลที่จะเกิดขึ้นเนื่องจากนี่เป็นที่เก็บข้อมูลระยะไกล

หน้าแท็ก git ในส่วนOn Retaggingมีคำอธิบายที่ดีเกี่ยวกับการแจ้งผู้ใช้รายอื่นของ repo ทางไกลอย่างสุภาพ พวกเขายังให้แม่แบบประกาศที่มีประโยชน์สำหรับการสื่อสารว่าคนอื่นควรได้รับการเปลี่ยนแปลงของคุณ


6

ฉันต้องการลบแท็กทั้งหมดยกเว้นแท็กที่ตรงกับรูปแบบเพื่อให้ฉันสามารถลบทั้งหมดยกเว้นแท็กการผลิตสองสามเดือนสุดท้ายนี่คือสิ่งที่ฉันเคยประสบความสำเร็จ:

ลบแท็กระยะไกลทั้งหมด & ไม่รวมนิพจน์จากลบ

git tag -l | grep -P '^(?!Production-2017-0[89])' | xargs -n 1 git push --delete origin

ลบแท็กท้องถิ่นทั้งหมดและไม่รวมนิพจน์จากลบ

git tag -l | grep -P '^(?!Production-2017-0[89])' | xargs git tag -d

5

สคริปต์ง่าย ๆ ในการลบแท็กที่กำหนดออกจากทั้งภายในและที่ตั้งต้นทาง ด้วยการตรวจสอบว่าแท็กมีอยู่จริงหรือไม่

if [ $(git tag -l "$1") ]; then
    git tag --delete  $1
    git push --delete origin $1

    echo done.
else
    echo tag named "$1" was not found
fi

วิธีใช้:

  • สร้างไฟล์เชลล์สคริปต์ (เช่น git-tag-purge.sh) และวางเนื้อหา
  • chmod ไฟล์สคริปต์ของคุณเพื่อให้มันปฏิบัติการได้
  • ทำให้สคริปต์พร้อมใช้งานทั่วโลก
  • cd ไปยังโครงการคอมไพล์ของคุณ
  • สคริปต์การโทร (เช่น
    $> git-tag-purge.sh tag_name
    )

4

ดูเหมือนว่าจะมีงานมากสำหรับบางสิ่งบางอย่างxargsแล้ว เมื่อมองย้อนกลับไปในหัวข้อนี้ฉันคาดเดาความเชื่องช้าของxargsสิ่งที่คุณเคยพบเพราะคำตอบเดิมที่ใช้xargs -n 1เมื่อมันไม่จำเป็นต้องใช้จริงๆ

นี่เทียบเท่ากับวิธีการของคุณยกเว้นว่าxargsจะเกี่ยวข้องกับความยาวบรรทัดคำสั่งสูงสุดโดยอัตโนมัติ:

git tag | sorting_processing_etc | xargs git push --delete origin

xargsสามารถเรียกใช้กระบวนการในแบบคู่ขนานได้เช่นกัน วิธีที่ 2 ด้วยxargs:

git tag | sorting_processing_etc | xargs -P 5 -n 100 git push --delete origin

ด้านบนใช้กระบวนการสูงสุด 5 กระบวนการเพื่อจัดการอาร์กิวเมนต์สูงสุด 100 ข้อในแต่ละกระบวนการ คุณสามารถทดสอบกับข้อโต้แย้งเพื่อค้นหาสิ่งที่ดีที่สุดสำหรับความต้องการของคุณ


น่าสนใจ คุณเรียนรู้สิ่งใหม่เกี่ยวกับคำสั่ง Unix ทุกวัน ฉันจะต้องทดสอบกรณีการใช้งานของฉันด้วยทางเลือกนี้
TonyH

4

หากคุณมีแท็กที่เริ่มต้นด้วยอักขระ#เช่น#ST002คุณอาจพบว่า u ไม่สามารถลบโดยใช้รูปแบบปกติ กล่าวคือ

git tag -d #STOO2

จะไม่ลบแท็ก แต่ห่อไว้ในสตริงตัวอักษรเช่นดังนั้น

git tag -d "#ST002" or git tag -d '#ST002'

ที่จะลบมัน หวังว่ามันจะช่วยให้คนที่ทำผิดพลาดจากการใช้#เพื่อเขียนชื่อแท็ก


2

นี่คือตู้ทดสอบในเครื่องสำหรับทดสอบภายในเครื่องโดยไม่ล้อเล่นกับรีโมท:

~/p $ mkdir gittest    
~/p/git $ cd gittest/
~/p/gittest $ git init
Initialized empty Git repository in /Users/local_user/p/gittest/.git/
 ~/p/gittest $ touch testfile.txt
 ~/p/gittest $ git add testfile.txt
 ~/p/gittest $ git commit -m "initial commit"
[master (root-commit) 912ce0e] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 testfile.txt
 ~/p/gittest $ git tag
 ~/p/gittest $ git tag -a testtag
 ~/p/gittest $ git tag
testtag
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
b0a6c15cabb990e6d6c46f762891b63608d962f3 refs/tags/testtag
 ~/p/gittest $ cd ..
 ~/p $ mkdir gitbare
 ~/p $ cd gitbare
 ~/p/gitbare $ git init --bare
Initialized empty Git repository in /Users/local_user/p/gitbare/
 ~/p/gitbare $ cd ..
 ~/p $ cd gittest/
 ~/p/gittest $ git remote add origin /Users/local_user/p/gitbare
 ~/p/gittest $ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 215.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Users/local_user/p/gitbare
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
 ~/p/gittest $ git push origin testtag
Counting objects: 1, done.
Writing objects: 100% (1/1), 163 bytes | 163.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To /Users/local_user/p/gitbare
 * [new tag]         testtag -> testtag
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
912ce0e40635c90241fdab756dce7ea34938de57 refs/remotes/origin/master
b0a6c15cabb990e6d6c46f762891b63608d962f3 refs/tags/testtag
 ~/p/gittest $ git push -d origin testtag
To /Users/local_user/p/gitbare
 - [deleted]         testtag
 ~/p/gittest    git tag -d testtag
Deleted tag 'testtag' (was b0a6c15)
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
912ce0e40635c90241fdab756dce7ea34938de57 refs/remotes/origin/master
 ~/p/gittest

1

สวัสดีฉันต้องการแบ่งปันนามแฝงที่ฉันสร้างซึ่งทำสิ่งเดียวกัน:

เพิ่มสิ่งต่อไปนี้ใน ~ / .gitconfig ของคุณ

[alias]
    delete-tag = "!f() { \
            echo 'deleting tag' $1 'from remote/origin ausing command: git push --delete origin tagName;'; \
            git push --delete origin $1; \
            echo 'deleting tag' $1 'from local using command: git tag -d tagName;'; \
            git tag -d $1; \
        }; f"

การใช้งานดูเหมือนว่า:

-->git delete-tag v1.0-DeleteMe
deleting tag v1.0-DeleteMe from remote/origin ausing command: git push --delete origin tagName;
To https://github.com/jsticha/pafs
 - [deleted]             v1.0-DeleteMe
deleting tag v1.0-DeleteMe from local using command: git tag -d tagName;
Deleted tag 'v1.0-DeleteMe' (was 300d3ef22)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.