දුරස්ථ ටැගයක් මකන්නේ කෙසේද?


3429

දැනටමත් තල්ලු කර ඇති Git ටැගයක් මකා දමන්නේ කෙසේද?

Answers:


5775

ඔබට දුරස්ථ ටැග් නාමයට 'හිස්' යොමු කිරීමක් අවශ්‍ය වේ:

git push origin :tagname

නැතහොත්, වඩාත් පැහැදිලිව, --deleteවිකල්පය භාවිතා කරන්න (හෝ -dඔබේ git අනුවාදය 1.8.0 ට වඩා පැරණි නම්):

git push --delete origin tagname

Git ට ටැග් නාම අවකාශය සහ ශාඛා නාම අවකාශයක් ඇති බව සලකන්න, එවිට ඔබට ශාඛාවක් සඳහා සහ ටැගයක් සඳහා එකම නම භාවිතා කළ හැකිය. ටැගය වෙනුවට ඔබට ශාඛාව අහම්බෙන් ඉවත් කළ නොහැකි බවට වග බලා ගැනීමට ඔබට අවශ්‍ය නම්, ඔබට කිසි විටෙකත් ශාඛාවක් මකා නොදමන සම්පූර්ණ ref නියම කළ හැකිය:

git push origin :refs/tags/tagname

ඔබට දේශීය ටැගය මකා දැමීමට අවශ්‍ය නම්, භාවිතා කරන්න:

git tag --delete tagname

පසුබිම

දුරස්ථ ගබඩාවකට ශාඛාවක්, ටැගයක් හෝ වෙනත් යොමු කිරීමක් තල්ලු කිරීම යනු "කුමන ගබඩාව, කුමන ප්‍රභවය, කුමන ගමනාන්තයද?"

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

ප්‍රභව ref මඟ හැරීමෙන් (මහා බඩවැලට පෙර කොටස), ඔබ 'කිසිවක්' ගමනාන්තයට තල්ලු කරමින් දුරස්ථ කෙළවරේ ඇති ref මකා දමයි.


187
+1 ප්‍රශ්නයට පිළිතුරු සැපයීම සහ පොදු නඩුව පැහැදිලි කිරීම සහ සීමා නොකළ සින්ටැක්ස් වල අර්ථය විස්තර කිරීම සඳහා
පීටර් සත්කාරක

77
වරකට බහුවිධ ටැග් මකා දැමිය හැක්කේ කෙසේදැයි යමෙකු කල්පනා කරන්නේ නම්, ඔබ ඒවා සුදු අවකාශය භාවිතා කර සරල ලැයිස්තු ගත කරයි, උදා git push --delete origin tag1 tag2. දේශීය ටැග් මකාදැමීම සඳහා git tag -d tag1 tag2
එයම

8
ටැග් නාමය ශාඛා නාමයක් සමඟ ගැටෙන්නේ නම්, ඔබේ ශාඛාව මකා දැමීමෙන් අවසන් විය හැකිය. හ-හ. දෙවන පිළිතුර බලන්න - එය වඩාත් පාරිසරිකයි
zuba

1
Mma එමාහී ඒ tagඅමුණා ඇත්තේ තනි කැපවීමකට පමණි. එම නිසා ශාඛා නාමය අදාල නොවේ.
cb2

1
එය git tag -d `git tag`සියලු දේශීය ටැග් මකා දමනු ඇති බව දැන ගැනීමද සිත්ගන්නා කරුණකි . git push --delete origin `git tag`ඔබ දුරස්ථ ටැග් දේශීයව ඇද ගත් බව උපකල්පනය කිරීම සඳහා ද එය අදාළ වේ . පරීක්ෂණ පරිසරයක් තුළ එය පහසු විය.
DarkFranX

383

වඩාත් සරල ක්‍රමයක් නම්

git push --delete origin YOUR_TAG_NAME

IMO උපසර්ගය මහා බඩවැලේ සින්ටැක්ස් මෙම තත්වය තුළ ටිකක් අමුතුයි


4
මම හිතන්නේ මෙය සුදුසුම ක්‍රමයයි ... අනෙක් සින්ටැක්ස් මට හක්ක වගේ.
ලුයිගි ආර්. විග්ජියානෝ

11
ඔව්, මෙය සරලයි. විචල්ය කොටස කුමක්දැයි සඳහන් කිරීමෙන් මම පිළිතුර පැහැදිලි කර git push --delete origin "TAGNAME"ගත්තද:, TAGNAME යනු මුල් ටැගයේ නමයි.
Teemu Leisti

12
මෙය ක්‍රියාත්මක වේ. එක් එකතු කිරීමක්: ඔබට එකම නමක් සහිත ශාඛාවක් හා ටැගයක් තිබේ නම්, ඔබට tagටැගය ලැබීමට වග බලා ගැනීම සඳහා එම වචනය ඔබේ ටැග් නාමයට පෙර තැබිය හැකිය .
andypaxo

9
yandypaxo විධානයට අවශ්‍ය වන්නේ refspecs, නිවැරදි ක්‍රමය වනුයේ ටැග්ස් සමඟ උපසර්ගය යෙදීමයි refs/tags/: refs/tags/v2.3.1.
p3lim

මට දුරස්ථ සේවාදායකයේ 'නරක' ටැග් නම කෙසේ හෝ නිර්මාණය කර ඇති අතර එයට විශේෂ අක්ෂර ඇත, එබැවින් මට එය සමඟ සමමුහුර්ත කළ නොහැක, එබැවින් ඔබේ යෝජනාව සමඟ එය ඉවත් කරන්න: git push --delete origin "service-- <default> - 151 ", එය ඉවත් කළ නොහැක ඉන්ටෙලිජ් සමඟ නොව, ස්ටෑෂ් සමඟ නොව, මූලාශ්‍රය සමඟ නොවේ. ස්තූතියි!
දිමිත්‍රි අල්ගසින්

215

v0.1.0මකා දැමීමට ඔබට දුරස්ථ ටැගයක් තිබේ නම් සහ ඔබේ දුරස්ථය නම් origin, සරලවම:

git push origin :refs/tags/v0.1.0

ඔබට දේශීයව ටැගය මකා දැමීමට අවශ්‍ය නම්:

git tag -d v0.1.0

මකාදැමීම සඳහා Git ගේ අසාමාන්‍ය වාක්‍ය ඛණ්ඩය පැහැදිලි කිරීම සඳහා ඇඩම් ෆ්‍රැන්කෝගේ පිළිතුර බලන්න :.


2
මෙය jgit සමඟ ද ක්‍රියා කරයි. ටැග් කෙටිකතාව jgit
rynop

මට ලැබුණා fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1...?
චයිම් එලියා

3
Ha චයිම් එලියා ඔබට ප්‍රමුඛ කප්පාදුවක් ඇත, සමහර විට එය ඔබේ ගැටලුව විය හැකිය
ජොෆ්රි

5
වඩා හොඳ පිළිතුර, ඔබට ශාඛාවක් හා ටැගයක් තිබේ නම් මෙයද ක්‍රියාත්මක වේ.
එරික් ඒ. බ්‍රැන්ඩ්ස්ටැඩ්මොන්

යන්තම් :tagnameදුරස්ථ මැකීම සඳහා වැඩ කළ යුතුයි.
Acumenus

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
දේශීය හා දුරස්ථ ගබඩාවලින් සියලුම ටැග් ඉවත් කරන්නේ කෙසේද. මම සොයන දේ මෙයයි, ස්තූතියි!
ජෝර්ජ් ඕපිනෙල්

git ලබා ගැනීම, දුරස්ථය මකා දමා පසුව ප්‍රදේශවාසීන් පිරිසිදු කිරීම, ලස්සනට වැඩ කිරීම!
DiegoRBaquero

මන්දගාමී, නමුත් වඩාත්ම සරල
ලුසෙන්ට් ෆොක්ස්

34

දුරස්ථ ගබඩාවෙන් ටැගය ඉවත් කිරීමට:

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 වෙත ගොස් නැවුම් කරන්න, ඒවා අතුරුදහන් වේ.


4
git tag not tags
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 බොත්තම නිවේදන කොටස.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


2
මෙම විධානය මඟින් ප්‍රශ්නයට පිළිතුරු දිය හැකි අතර, මෙම කේතය ප්‍රශ්නයට පිළිතුරු සපයන්නේ ඇයි සහ / හෝ කෙසේද යන්න පිළිබඳ අතිරේක සන්දර්භයක් ලබා දීමෙන් එහි දිගුකාලීන වටිනාකම වැඩි දියුණු වේ. පිළිතුරු දිය යුතු ආකාරය
පොපෝ

21

'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>'

කෙටි හා සංක්ෂිප්ත. මෙම පෝස්ට් එක සහ මේගන් ෂෝගේ ප්‍රශ්න සමඟ අපට ගැටළු ඇතිවීමට හේතුව, ශාඛා නාමය සහ ටැග් නාමය එක සමාන විය. මම දේශීය ටැගය මකා දමා වෙතට යොමු කළෙමි: 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මෙම ආකෘති ටැගය සමඟ භාවිතා කිරීම සෑම දුරස්ථ ref එකකටම කිසිවක් තල්ලු නොකරයි , එය මකා දමයි (මේ ආකාරයට තල්ලු කිරීමේ සාමාන්‍ය ආකෘතිය එයයි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 එක වෙනත් ස්ථානයකට ගෙන යන්න. අවසාන වශයෙන්, දේශීයව මකාදැමීමේ ටැගයන් තොග වශයෙන්, අවකාශයෙන් වෙන් කරන ලද ටැග් සමඟ ක්‍රියා කරයි (කොලොන් ඉවත් කරන්න)
කියුබාන්එක්ස්

ප්‍රශංසාවට හා යෝජනා වලට ස්තූතියි. මම මෙය බෙදන්නෙමි. දේශීය ටැග් මකා දැමීම පිළිබඳ ඔබේ අදහස මට තේරෙන්නේ නැත. මගේ අවසාන විධාන ස්නිපටය කිසිදු කොලොන් භාවිතා කරයි යැයි මම නොසිතමි, නමුත් මම ජංගම දුරකථනයේ සිටිමි.
ටෝනි එච්

කණගාටුයි, මම අදහස් කළේ දුරස්ථ ටැග් මකා දැමීමට ඔබ කරන්නේ කුමක්ද, දේශීය ටැග් මකා දැමීම සමඟ ක්‍රියා කරයි, මුළු ලැයිස්තුවම එකවර සපයයි. :) git push සම්භවය වෙනුවට: tag1: tag2 ආදිය. ඔබ කරන්නේ git tag --delete tag1 tag2 tag3 ඒ ආකාරයෙන් ඔබට සම්පූර්ණ පිරිසිදු කිරීමක් කළ හැකිය. නැවතත්, ටොන් එකකට ස්තූතියි!
කියුබන්එක්ස්

11

ඔබ SourceTree - විශිෂ්ට Git GUI භාවිතා කරන්නේ නම්, පහත දැක්වෙන දේ කිරීමෙන් විධාන රේඛාවකින් තොරව ඔබට පහසුවෙන් මෙය කළ හැකිය:

  1. SourceTree හි ඔබේ ගබඩාව විවෘත කරන්න
  2. වම්පස ඇති "ටැග්" ටැබය තෝරන්න සහ පුළුල් කරන්න
  3. ඔබට මැකීමට අවශ්‍ය ටැගය මත දකුණු-ක්ලික් කරන්න
  4. "YOUR_TAG_NAME මකන්න" තෝරන්න
  5. සත්‍යාපන කවුළුව තුළ, "දුරස්ථ වලින් ටැගය ඉවත් කරන්න" තෝරන්න

YOUR_TAG_NAME දැන් ඔබේ දේශීය ගබඩාවෙන් සහ සියලු දුරස්ථ වලින් ඉවත් කරනු ලැබේ - එය GitHub, BitBucket හෝ වෙනත් ඕනෑම තැනක එම ගබඩාව සඳහා දුරස්ථයක් ලෙස ලැයිස්තුගත කර ඇත.

එසේම, ඔබ දේශීයව ටැගයක් මකා දැමුවද දුරස්ථ මූලාරම්භයේ නොව, ඔබට එය සෑම තැනකම මකා දැමීමට අවශ්‍ය නම්, එකම නමක් ඇති නව ටැගයක් සාදන්න. ඉන්පසු, සෑම තැනකම මකා දැමීමට ඉහත පියවර නැවත කරන්න.


චාම් එකක් වගේ වැඩ කරනවා. ස්තූතියි!
ස්වදේශීය_ මොබයිල්_ආර්ච්_දෙව්

9

ඔබ release01Git ගබඩාවක නමින් ටැගයක් නිර්මාණය කර ඇත්නම් , පහත සඳහන් දෑ කිරීමෙන් ඔබ එය ඔබේ ගබඩාවෙන් ඉවත් කරනු ඇත:

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

රසදිය ගබඩාවකින් එකක් ඉවත් කිරීමට:

hg tag --remove featurefoo

කරුණාකර https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


7

ඔබ පවර්ෂෙල් භාවිතා කරන්නේ නම්, ඔබට ඒවායින් කිහිපයක් මකා දැමීමට අවශ්‍ය නම්:

# 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 $_ }

එය සුමට හා හොඳ රීජෙක්ස් උදාහරණයකි. ස්තූතියි සර් සර්
යූනුස්

7

Ub කියුබන්එක්ස් යෝජනා කළ පරිදි, මම මෙම පිළිතුර මගේ මුල් පිටපතෙන් බෙදුවෙමි:

මෙන්න ක්‍රමයට වඩා කිහිප ගුණයකින් වේගවත් වන අතර එය xargsකරකැවීම සමඟ තවත් බොහෝ දේ පරිමාණය කළ හැකිය. එය පුද්ගලික ප්‍රවේශ ටෝකනයක් වන ගිතුබ් ඒපීඅයි භාවිතා කරන අතර උපයෝගීතාව උත්තේජනය කරයි 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වේගවත් ක්‍රියාකාරිත්වයට ඉඩ දීම සඳහා ඔබට පරාමිතිය වෙනස් කළ හැකිය , නමුත් ගිතුබ්ගේ අනුපාත සීමාවන් සමඟ මට ගැටලු ඇති අතර ඒවා දැනට පැයට 5000 / පැයක් වන අතර ලේඛනගත නොකළ කෙටි කාලීන සීමාවක් ද ඇති බව පෙනේ.


මෙයින් පසු, ඔබේ දේශීය ටැග් ද මකා දැමීමට ඔබට අවශ්‍ය වනු ඇත. අපි භාවිතා ආපසු යන්න පුළුවන් නිසා මේ තරම් වේගවත් වේ xargsහා git tag -dප්රමාණවත් වන.

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

මෙය පිළිගත් පිළිතුරු වලට වඩා බෙහෙවින් සංකීර්ණ බව පෙනේ. වාසිය කුමක්ද?
TheUtherSide

2
ඔබට ටැග් දහස් ගණනක් මකා දැමීමට අවශ්‍ය නම්, වේගය 10-100 ගුණයකින් වේගවත් වේ
ටෝනි එච්

පැහැදිලි කිරීම ගැන ස්තූතියි. තනි ටැගයක් මකා දැමීම ගැන OP විමසීය. යමෙක් මෙම ප්‍රවේශය තනි ටැගයක් සඳහා යොදා ගන්නේ මන්දැයි මට සිතාගත නොහැකි විය. බොහෝ ටැග් මකා දැමීමේ තවත් ප්‍රශ්නයකට මෙම පිළිතුර වඩා හොඳ විය හැකිය
UtherSide

මම හිතන්නේ නැහැ එය පවතිනවා කියලා. මට පිළිතුරු දීමට මට එය නිර්මාණය කළ හැකිය. එය සුදුසු යැයි සිතීමට ඔබට අවශ්‍යද?
ටෝනි එච්

1
මම කරනවා! මම හිතන්නේ එය ඇත්තෙන්ම මෙහි සාමාන්‍ය සිරිතකි.
TheUtherSide

6

අනෙක් පිළිතුරු මඟින් මෙය සිදු කරන්නේ කෙසේදැයි පෙන්වා දෙයි, නමුත් මෙය දුරස්ථ ගබඩාවක් බැවින් ඔබ එහි ප්‍රතිවිපාක මතක තබා ගත යුතුය.

On Retagging කොටසේ ඇති git tag man පිටුවේ, වෙනස පිළිබඳව දුරස්ථ 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 ව්‍යාපෘතියට
  • ඇමතුම් පිටපත (උදා
    $> 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

ඉහත එක් එක් ක්‍රියාවලිය තුළ උපරිම තර්ක 100 ක් හැසිරවීමට උපරිම ක්‍රියාවලි 5 ක් භාවිතා කරයි. ඔබේ අවශ්‍යතා සඳහා වඩාත්ම සුදුසු දේ සොයා ගැනීමට ඔබට තර්ක සමඟ අත්හදා බැලිය හැකිය.


සිත්ගන්නා සුළුය. ඔබ දිනපතා යුනික්ස් විධානයක් ගැන අලුත් දෙයක් ඉගෙන ගන්නවා. මෙම විකල්පය සමඟ මගේ භාවිත නඩුව පරීක්ෂා කිරීමට මට අවශ්‍යය.
ටෝනි එච්

4

ඔබට # අක්‍ෂරයෙන් ආරම්භ කර ඇති ටැගයක් තිබේ නම් , උදා #ST002, සාමාන්‍ය රටා භාවිතයෙන් ඔබට මකා දැමිය නොහැකි බව ඔබට පෙනී යනු ඇත. එනම්

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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.