Git का उपयोग करके आप किसी टैग को दूरस्थ रिपॉजिटरी में कैसे धकेलते हैं?


2217

मैंने अपने लैपटॉप में एक रिमोट गिट रिपॉजिटरी क्लोन किया है, तो मैं एक टैग जोड़ना चाहता था इसलिए मैं भाग गया

git tag mytag master

जब मैं git tagअपने लैपटॉप पर चलता हूं तो टैग mytagदिखाया जाता है। मैं इसे दूरस्थ रिपॉजिटरी में धकेलना चाहता हूं, इसलिए मेरे सभी क्लाइंट पर यह टैग है, इसलिए मैं चलाता git pushहूं लेकिन मुझे संदेश मिला:

सब कुछ नया

और अगर मैं अपने डेस्कटॉप पर जाता हूं और चला जाता हूं git pullऔर फिर git tagकोई टैग नहीं दिखाया जाता है।

मैंने परियोजना में एक फ़ाइल पर एक मामूली बदलाव करने की भी कोशिश की है, फिर इसे सर्वर पर धकेल दें। उसके बाद मैं सर्वर से अपने डेस्कटॉप कंप्यूटर में परिवर्तन खींच सकता था, लेकिन git tagमेरे डेस्कटॉप कंप्यूटर पर चलने के दौरान कोई टैग नहीं है।

मैं अपने टैग को दूरस्थ रिपॉजिटरी में कैसे धकेल सकता हूं ताकि सभी क्लाइंट कंप्यूटर इसे देख सकें?

जवाबों:


1086

git push --follow-tags

यह एक 1.8 git में शुरू किया गया विकल्प है:

git push --follow-tags

यह दोनों हिट करता है और केवल टैग जो दोनों हैं:

  • एनोटेट
  • धकेलने से उपलब्ध (पूर्वज)

यह समझदार है क्योंकि:

  • आपको केवल दूरस्थ टैगों को दूरस्थ रूप से धकेलना चाहिए, और टैग क्लैश से बचने के लिए स्थानीय विकास के लिए हल्के टैग रखने चाहिए। इसे भी देखें: एनोटेट और अननोनॉटेड टैग में क्या अंतर है?
  • यह असंबंधित शाखाओं पर एनोटेट टैग को धक्का नहीं देगा

यह उन कारणों के लिए है --tagsजिनसे बचा जाना चाहिए।

Git 2.4 नेpush.followTags उस ध्वज को डिफ़ॉल्ट रूप से चालू करने का विकल्प जोड़ा है , जिसे आप इसके साथ सेट कर सकते हैं:

git config --global push.followTags true

16
इसके लिए धन्यवाद, यह सब कुछ एक ही बार में धकेलने के लिए समझ में आता है, बनाम सामग्री को पुश करने के लिए फिर टैग को अलग से धक्का।
शेन

1
यह मेरे लिए एक बार में स्पष्ट नहीं था कि यह "एनोटेट" और "पुश किए गए कमिट्स से पहुंच" के बीच एक संबंध था। मुझे आशा है कि यह सभी पहुंच योग्य टैगों को धक्का देगा, चाहे जो भी एनोटेट हो या न हो। शायद यह सुनिश्चित करने के लिए संपादित करें कि यह एक या नहीं है?
गौथियर

सू, जैसा कि मैंने ऐसा किया है, मैं बिटबकेट में वापस जाता हूं, क्या मुझे कमांड-लाइन से इसे देखने में सक्षम होने के अलावा कहीं टैग सूची देखनी चाहिए?
पॉजिटिव

10
यह मेरे लिए git 2.5.0 में काम नहीं करता है, लेकिन git push origin --tagsकरता है।
nnyby

3
पुश के लिए धन्यवाद ।followTags टिप। मुझे विश्वास नहीं हो रहा है कि यह आउट-ऑफ-द-बॉक्स डिफ़ॉल्ट नहीं है। इसके बिना, टैग को भी परेशान न करें, आप भूल जाएंगे और सिंक टैग से बाहर निकल जाएंगे।
मूडबूम

3604

किसी एक टैग को पुश करने के लिए:

git push origin <tag_name>

और निम्नलिखित कमांड को सभी टैग्स को धकेलना चाहिए ( अनुशंसित नहीं ):

git push --tags

426
मैं सलाह देता हूं कि दूसरों का उपयोग करने के लिए उपयोग या प्रशिक्षण न करें git push --tagsक्योंकि बुरे टैग से छुटकारा पाना बहुत मुश्किल हो सकता है जब आपके सहकर्मियों को सभी टैगों को धकेलने के लिए प्रशिक्षित किया जाता है, क्योंकि लोग पुराने खराब टैगों को धक्का देना जारी रखते हैं जो वे हर समय स्थानीय रूप से चाहते हैं। एक नया टैग पुश करने के लिए। इस वजह से, मैं केवल किसी को git push origin <tag_name>अब उपयोग करने की सलाह दूंगा ।
स्कॉट जुंगविर्थ सेप 25'14

43
स्थानांतरित टैग को आगे बढ़ाने के लिए: git push origin <tag_name> --force
बॉब स्टीन

38
खैर @ScottJungwirth मुझे लगता है कि एक डेवलपर के रूप में एक सावधान रहना चाहिए। अन्यथा आप उपलब्ध कमांडों को बिल्कुल भी न सिखाने की सलाह दे सकते हैं।
विल्ह

18
यदि आपका टैग दूरस्थ शाखा के समान है और इसके git pushसाथ विफल रहता है error: src refspec <tag_name> matches more than one., तो आप इसे आगे बढ़ा सकते हैंgit push origin tag <tag_name>
वोलोडाइमिर सैपसै

5
अच्छी तरह से @Willa का सवाल था " एक टैग को रिमोट रेपो पर धकेलना ।" तो git push origin <tag_name>उस सवाल के लिए एक बेहतर जवाब है। ;)
वाइल्डकार्ड

265

विशिष्ट पुश करने के लिए, एक टैग निम्नलिखित है git push origin tag_name


99

ट्रेवर के जवाब पर विस्तार करने के लिए , आप एक ही बार में एक टैग या अपने सभी टैगों को आगे बढ़ा सकते हैं।

एक एकल टैग पुश

git push <remote> <tag>

यह संबंधित दस्तावेज का सारांश है जो यह बताता है (संक्षिप्तता के लिए छोड़े गए कुछ कमांड विकल्प):

git push [[<repository> [<refspec>…]]

<refspec>...

एक <refspec>पैरामीटर का प्रारूप है ... स्रोत रेफरी <src>, उसके बाद एक कोलन :, उसके बाद गंतव्य रेफरी <dst>...

<dst>बताता दूरदराज के पक्ष में जो रेफरी इस धक्का के साथ अद्यतन किया जाता है ... तो :<dst>छोड़ दिया जाता है, के रूप में ही रेफरी <src>अद्यतन किया जाएगा ...

टैग का <tag>मतलब उसी तरह है refs/tags/<tag>:refs/tags/<tag>

एक बार में अपने सभी टैग पुश

git push --tags <remote>
# Or
git push <remote> --tags

यहाँ प्रासंगिक प्रलेखन का सारांश (कुछ कमांड विकल्प संक्षिप्तता के लिए छोड़ा गया है):

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

के तहत सभी refs refs/tagsको धकेल दिया जाता है, Refspecs के अलावा स्पष्ट रूप से कमांड लाइन पर सूचीबद्ध किया गया है।


उदाहरण कीवर्ड को छोड़ रहा है tag। उदा git push origin tag funny-tag-1
जेम्सटॉमासून 1979

1
@ JamesThomasMoon1979 आपको इसकी आवश्यकता नहीं है। आप इस तरह की उत्पत्ति के लिए एक एकल टैग को धक्का देते हैं: git push origin my-tag(मैंने अभी इसकी कोशिश की है!)
एंड्रेस एफ।

मैं संस्करण 1.9.1 का उपयोग कर रहा था , आप @AndresF के बारे में क्या। ?
JamesThomasMoon1979

1
@ JamesThomasMoon1979 संस्करण 2.10.2। शायद यही है?
एंड्रेस एफ।

54

Git पुश कमांड द्वारा टैग को दूरस्थ रिपॉजिटरी में नहीं भेजा जाता है। हमें निम्नलिखित कमांड का उपयोग करके इन टैगों को स्पष्ट रूप से दूरस्थ सर्वर पर भेजने की आवश्यकता है:

git push origin <tagname>

हम नीचे दिए गए आदेश का उपयोग करके एक बार में सभी टैगों को धकेल सकते हैं:

git push origin --tags

जीआईटी टैगिंग पर संपूर्ण विवरण के लिए कुछ संसाधन यहां दिए गए हैं:

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags


50

आप सभी स्थानीय टैग को केवल git push --tagsकमांड द्वारा पुश कर सकते हैं ।

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 


15

मैं git push <remote-name> tag <tag-name>यह सुनिश्चित करने के लिए उपयोग कर रहा हूं कि मैं एक टैग को आगे बढ़ा रहा हूं। मैं इसका उपयोग करता हूं git push origin tag v1.0.1:। यह पैटर्न प्रलेखन पर आधारित है ( man git-push):

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

1
उत्कृष्ट, शीर्ष पर होना चाहिए था - क्योंकि यह सुनिश्चित करता है कि टैग एक शाखा नहीं है जिसे गलत तरीके से धक्का दिया गया है।
समशर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.