चेतावनी: यह एनोटेट टैग के लिए टैग संदेशों को संरक्षित नहीं करेगा ।
सारांश
प्रत्येक टैग के लिए जिसे बदलना होगा:
- टैग का प्रतिनिधित्व करने वाले समय पर वापस जाएं
- टैग हटाएं (स्थानीय रूप से और दूरस्थ रूप से)
- यह आपके "रिलीज़" को GitHub पर एक ड्राफ्ट में बदल देगा जिसे आप बाद में हटा सकते हैं।
- मैजिक इनवोकेशन का उपयोग करके उसी नाम वाले टैग को फिर से जोड़ें, जो अपनी तारीख को कमिट करने की तारीख तय करता है।
- GitHub तक की निश्चित तारीखों के साथ नए टैग पुश करें।
- GitHub पर जाएं, अब-ड्राफ्ट रिलीज़ हटाएं, और नए टैग से नए रिलीज़ बनाएं
कोड में:
# Fixing tag named '1.0.1'
git checkout 1.0.1 # Go to the associated commit
git tag -d 1.0.1 # Locally delete the tag
git push origin :refs/tags/1.0.1 # Push this deletion up to GitHub
# Create the tag, with a date derived from the current head
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a 1.0.1 -m"v1.0.1"
git push --tags # Send the fixed tags to GitHub
विवरण
के अनुसार Git में कैसे टैग करने के लिए :
यदि आप किसी रिलीज़ या संस्करण को टक्कर देना भूल जाते हैं, तो आप हमेशा इसे रेट्रो रूप से टैग कर सकते हैं:
git checkout SHA1_OF_PAST_COMMIT
git tag -m"Retroactively tagging version 1.5" v1.5
और जब यह पूरी तरह से प्रयोग करने योग्य होता है, तो यह आपके टैगों को कालानुक्रमिक क्रम से बाहर करने का प्रभाव होता है जो "नवीनतम" टैग के लिए दिखने वाले बिल्ड सिस्टम के साथ खराब हो सकता है। लेकिन कोई डर नहीं है। लिनस ने सब कुछ सोचा:
# This moves you to the point in history where the commit exists
git checkout SHA1_OF_PAST_COMMIT
# This command gives you the datetime of the commit you're standing on
git show --format=%aD | head -1
# And this temporarily sets git tag's clock back to the date you copy/pasted in from above
GIT_COMMITTER_DATE="Thu Nov 11 12:21:57 2010 -0800" git tag -a 0.9.33 -m"Retroactively tagging version 0.9.33"
# Combining the two...
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a 0.9.33 -m"Retroactively tagging version 0.9.33"
हालाँकि, यदि आपने पहले ही टैग जोड़ लिया है, तो आप उपरोक्त का उपयोग नहीं कर सकते हैं git tag -f existingtag
या जब आप मर्ज करने की कोशिश करेंगे तो शिकायत शिकायत करेगी:
Rammy:docubot phrogz$ git push --tags
To git@github.com:Phrogz/docubot.git
! [rejected] 1.0.1 -> 1.0.1 (already exists)
error: failed to push some refs to 'git@github.com:Phrogz/docubot.git'
hint: Updates were rejected because the tag already exists in the remote.
इसके बजाय, आपको स्थानीय रूप से टैग हटाना होगा:
git tag -d 1.0.1
उस विलोपन को दूर से धकेलें :
git push origin :refs/tags/1.0.1
GitHub पर, रीलिज़ जारी करता है - अब रिलीज़ को एक "ड्राफ्ट" के रूप में चिह्नित किया गया है - और ड्राफ्ट को हटा दें।
अब, ऊपर दिए गए निर्देशों के आधार पर बैकडेट टैग जोड़ें और परिणामी टैग को GitHub पर धकेलें:
git push --tags
और फिर जाकर GitHub रिलीज़ जानकारी को फिर से जोड़ें।
git tag -l | while read -r tag; do `git checkout $tag && git tag -d $tag && git push origin :refs/tags/$tag && GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a $tag -m"$tag"`; done; git push --tags