Git में किसी पुराने कमिट को कैसे टैग करें?


949

हम नए हैं, और मैं अपनी रिपॉजिटरी की शुरुआत में एक टैग सेट करना चाहता हूं। हमारा उत्पादन कोड शुरुआत के भंडार के समान है, लेकिन हमने तब से कमिट किया है। शुरुआत में एक टैग हमें एक ज्ञात, स्थिर स्थिति में "रोल बैक" उत्पादन की अनुमति देगा।

तो एक मनमाने, पुराने कमिट में टैग कैसे जोड़े?


मैं यहां एक पुराने टैग को स्थानीय रूप से और रिमोट पर हटाने में मदद की तलाश में आया था और आखिरकार यह उपयोगी पाया गया, शायद यह किसी और की भी मदद करेगा
अलेक्जेंडर लिंडके

1
और यह मत भूलो कि Git का उपयोग करके किसी टैग को दूरस्थ रिपॉजिटरी में कैसे धकेलना है? क्योंकि कुछ विशेष किए बिना Git एक टैग को आगे नहीं बढ़ाएगा।
jww

आप प्रतिबद्ध हैश का उपयोग करके पुराने कमिट्स में एक टैग जोड़ सकते हैं। यहाँ इसके लिए वाक्य रचना है: git टैग -a <tagName> -m "टैग संदेश" <प्रतिबद्ध हैश> अधिक बुनियादी के लिए उन्नत करने के लिए, यहाँ संदर्भ abhisheksharma.online/git-tags
अभिषेक

जवाबों:


1510

उदाहरण:

git tag -a v1.2 9fceb02 -m "Message here"

9fceb02कमिट आईडी का शुरुआती हिस्सा कहां है।

फिर आप टैग का उपयोग करके धक्का दे सकते हैं git push origin v1.2

आप git logअपनी वर्तमान शाखा में सभी प्रतिबद्ध आईडी दिखाने के लिए कर सकते हैं ।

प्रो गिट बुक में टैगिंग पर एक अच्छा अध्याय भी है ।

चेतावनी: यह वर्तमान तिथि के साथ टैग बनाता है (और वह मान जो GitHub रिलीज़ पृष्ठ पर दिखाएगा, उदाहरण के लिए)। यदि आप चाहते हैं कि टैग को दिनांक के साथ दिनांकित किया जाए, तो कृपया अन्य उत्तर को देखें


45
आप इसे gitk में राइट-क्लिक मेनू में भी कर सकते हैं - सुविधाजनक यदि आप वैसे भी SHA1 खोज रहे हैं।
Cascabel

62
न आना -aऔर -m "Message here"भागों आप एक संदेश में शामिल नहीं करना चाहते हैं:git tag v1.2 9fceb02
devius

3
आप फुल कमिट आईडी का भी उपयोग कर सकते हैं।
जे ०१० यू

1
@devius उपयोग करने -aऔर के बीच क्या अंतर है -m। लगता है कि आदमी पृष्ठ का उपयोग करने के -aलिए निहित -mहै।
जॉन स्ट्रॉड

7
git push --tags origin masterसभी टैग्स को स्थानीय शाखा पर रिमोट पर पुश करेगा। git push origin <tag_name>केवल बनाए गए टैग को पुश करना पसंद करें। देखें: stackoverflow.com/a/5195913/452708 , git-scm.com/book/en/v2/Git-Basics-Tagging
Abhijeet

144

सिर्फ कोड

# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02

# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"

# set HEAD back to whatever you want it to be
git checkout master

विवरण

@Dkinzer द्वारा दिए गए उत्तर से टैग बनते हैं जिनकी तिथि वर्तमान तिथि है (जब आप git tagकमांड चलाते थे ), कि प्रतिबद्ध दिनांक। Git मदद के लिए tagएक खंड है "बैकडैटिंग टैग पर" जो कहता है:

यदि आपने किसी अन्य VCS से कुछ परिवर्तन आयात किए हैं और अपने कार्य की प्रमुख रिलीज़ के लिए टैग जोड़ना चाहते हैं, तो टैग ऑब्जेक्ट के अंदर एम्बेड करने की तिथि निर्दिष्ट करने में सक्षम होना उपयोगी है; टैग ऑब्जेक्ट में ऐसा डेटा प्रभावित करता है, उदाहरण के लिए, gitweb इंटरफ़ेस में टैग का क्रम।

भविष्य की टैग ऑब्जेक्ट्स में उपयोग की जाने वाली तिथि निर्धारित करने के लिए, पर्यावरण चर सेट करें GIT_COMMITTER_DATE(संभावित मूल्यों की बाद की चर्चा देखें, सबसे आम रूप "YYYY-MM-DD HH: MM" है)।

उदाहरण के लिए:

$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1

पेज "हाउ टू टैग इन गेट" हमें दिखाता है कि हम एचएएडी प्रतिबद्ध समय के माध्यम से निकाल सकते हैं:

git show --format=%aD  | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700

हम के माध्यम से एक विशिष्ट प्रतिबद्ध की तारीख निकाल सकते हैं:

GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"

हालाँकि, दो बार वचन को दोहराने के बजाय, यह आसान है कि हेड को उस कमिट में बदल दें और दोनों आदेशों में इसका उपयोग करें:

git checkout 9fceb02 

GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"

4
@ColonelPanic, आपकी इच्छा मेरी आज्ञा है! github.com/lucasrangit/git-custom-commands/blob/master/…
लुकास

यदि आप अपने प्रोजेक्ट / टैग पृष्ठ पर दिखाई गई तारीख के बारे में रिलीज़ और देखभाल करने के लिए Github का उपयोग करते हैं, तो GIT_COMMITTER_DATE को सेट करना विशेष रूप से महत्वपूर्ण है!
लेस्ली

2
@ColonelPanic मैंने आपको दंड के लिए एक अपवोट दिया था, और काश मैं आपको कोड के लिए दूसरा एक दे सकता था, लेकिन एक गितूब स्टार को करना होगा।
आयुषीत

96

ऐसा करने का सबसे सरल तरीका है:

git tag v1.0.0 f4ba1fc

f4ba1fcकमिट के हैश की शुरुआत के साथ आप टैग करना चाहते हैं और v1.0.0जिस संस्करण को आप टैग करना चाहते हैं वह होने के नाते।


बहुत बहुत धन्यवाद :)।
सालेह एनाम शोहग

38

कमांड का उपयोग करें:

git tag v1.0 ec32d32

जहां v1.0 टैग नाम है और ec32d32 वह टैग है जिसे आप टैग करना चाहते हैं

एक बार हो जाने के बाद आप टैग्स को पुश कर सकते हैं:

git push origin --tags

संदर्भ:

Git (संशोधन नियंत्रण): मैं GitHub में एक विशिष्ट पिछले कमिट बिंदु को कैसे टैग कर सकता हूं?


36

ठीक है , आप बस कर सकते हैं:

git tag -a <tag> <commit-hash>

इसलिए यदि आप टैग जोड़ना चाहते हैं : 1.0.2 प्रतिबद्ध करने के लिए e50f795, बस करें:

git tag -a 1.0.2 e50f795

इसके अलावा, आप अंत में एक संदेश जोड़ते हैं , का उपयोग करते हुए -m, कुछ इस तरह से:

git tag -a 1.0.2 e50f795 -m "my message"

आखिरकार, आपको इसे करने के लिए धक्का देना होगा remote, ऐसा करने के लिए, बस:

git push origin 1.0.2 

यदि आपके पास कई टैग हैं जो आप उन्हें एक-एक करके उल्लेख नहीं करना चाहते हैं, तो बस करें:

git push origin --tags

सभी टैग्स को एक साथ पुश करने के लिए ...

इसके अलावा, मैंने चरणों के अधिक स्पष्टीकरण के लिए, नीचे दी गई छवि में चरण बनाए: एक हैश पर टैग बनाना

आप हब में भी टैग लगा सकते हैं या सोर्सट्री जैसे टूल का उपयोग कर सकते हैं , पिछले चरणों से बचने के लिए, मैंने इस मामले में अपने बिटबकेट में लॉग-इन किया और वहाँ से कर रहा हूँ:

  1. अपनी शाखा में जाओ और खोजने के लिए प्रतिबद्ध आप के लिए टैग को जोड़ने और उस पर क्लिक करना चाहते हैं:

बिटकॉइन में अपनी प्रतिबद्धता खोजें

  1. में पेज के लिए प्रतिबद्ध है, है ना पर, लगता है जहां लिखा है No tagsऔर पर क्लिक करें +आइकन:

जहाँ यह कहते हैं कि कोई टैग नहीं मिल रहा है

  1. टैग नाम बॉक्स में, अपना टैग जोड़ें:

टैग नाम जोड़ें

  1. अब आप देखते हैं कि टैग सफलतापूर्वक बनाया गया है:

यहां छवि विवरण दर्ज करें


11

यह एक पुराना सवाल है, और पहले से ही दिए गए जवाब सभी काम करते हैं, लेकिन एक नया विकल्प भी है जिसे माना जा सकता है।

यदि आप अपने गिट रिपॉजिटरी का प्रबंधन करने के लिए SourceTree का उपयोग कर रहे हैं, तो आप किसी भी कमिट पर राइट-क्लिक कर सकते हैं और उसमें एक टैग जोड़ सकते हैं। एक अन्य मूसलीक के साथ आप मूल पर सीधे शाखा को टैग भी भेज सकते हैं।


6

दूसरों के जवाबों के आधार पर, यहां एक लाइनर समाधान है जो टैग की तारीख को सेट करता है जब यह वास्तव में हुआ था, एनोटेट टैग का उपयोग करता है और इसके लिए कोई आवश्यकता नहीं होती है git checkout:

tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master

जहां tagवांछित टैग स्ट्रिंग पर सेट किया गया है, और commitप्रतिबद्ध हैश के लिए।


3

जवाब @Phrogz से महान है, लेकिन विंडोज पर काम नहीं करता। यहाँ Powershell का उपयोग करते हुए कमिट की मूल तारीख के साथ एक पुरानी प्रतिबद्धता को कैसे टैग करें:

git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.