2012-03-12 14 views

उत्तर

3

git fetch --tags यह करेगा।

docs ( --tags पैरामीटर का वर्णन) से

:

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

+0

इस्तेमाल किया लेकिन मैं कैसे स्थानीय टैग मौजूदा अधिलेखित करने के लिए पूछ रहा हूँ क्योंकि वे गलत तरीके से – linquize

+1

'Git लाने --tags' जाएगा तथ्य अद्यतन में स्थानीय टैग मौजूदा, जैसे बनाए गए थे, अगर रिमोट टैग फूड मैप्स 1234567 और स्थानीय टैग फूड मैप्स को fedcba9, 'git fetch --tags' को 1234567 के साथ फूड को प्रतिस्थापित करेगा। – torek

+0

अद्यतन: गिट के नए संस्करणों में, यह अब स्थानीय टैग अपडेट नहीं करेगा। आप 'git fetch ' + refs/टैग/*: refs/टैग/* ''(' --force' भी काम कर सकते हैं, लेकिन मैंने इसका परीक्षण नहीं किया है) के बजाय, उन्हें बल-अपडेट कर सकते हैं। – torek

-1

टैग ओवरराइट नहीं किए जाएंगे, क्योंकि वे अपरिवर्तनीय होने के लिए हैं। यदि आप एक वस्तु (वास्तविक रूप से) परिवर्तनीय होना चाहते हैं, तो इसके बजाय एक शाखा सूचक या एक रेफरी का उपयोग करें। जो आपको छोड़ देता है: गिट टैग-डी टैगनाम ..., और फिर इसे फिर से ला रहा है।

+0

मैं आपके पहले कथन से सहमत नहीं हूं - यह आपको वीसीएस का उपयोग करने के पूरे बिंदु को विकृत करेगा, आपको नहीं लगता? – lightonphiri

+0

गिट फिर से लिखने (पहले से साझा, दूरस्थ) इतिहास को प्रोत्साहित नहीं करता है। यह एक वीसीएस के बिंदु को हराने नहीं करता है - जो इतिहास रखना है! ज्यादातर मामलों में ऐसी चीजों को होने के लिए मजबूर करना संभव है लेकिन इससे कुछ समस्याएं पैदा हो सकती हैं। –

4

git fetch --tags --all --prune

यह स्पष्ट रूप से लाने के लिए Git बता देंगे, और एक ही समय में, टैग जो अब रिमोट पर मौजूद हटा दें।

+1

यह उन टैग को हटाने के लिए प्रतीत नहीं होता है जो केवल स्थानीय रूप से मौजूद थे। –

+0

@MartijnHeemels, गिट किसी टैग के बीच अंतर नहीं कर सकता जिसे कभी धक्का नहीं दिया गया था और एक टैग जिसे रिमोट से हटा दिया गया था। –

0

सबसे पहले, शाखाओं के विपरीत, गिट स्थानीय टैग से अलग दूरस्थ टैग ट्रैक नहीं करता है। एक बार लाने के बाद, वे अलग-अलग हैं।

  • स्थानीय टैग स्थानीय टैग अपडेट (भले ही मैनुअल नहीं बताता है)
    • git fetch --tags
  • अपडेट नहीं करता करता
    • git fetch
    • git fetch --prune
    • git fetch --prune --force

एक टैग अद्यतन/अधिलेखित इस तरह दिखता है:

From git:path/name 
- [tag update]  my_tag -> my_tag 

यह हल्के और एनोटेट टैग, यहां तक ​​कि मिश्रित के लिए काम करता है। यही है: एक एनोटेटेड टैग हल्के वजन के साथ ओवरराइट किया जा सकता है और इसके विपरीत।

मैं Git संस्करण 2.7.4

+0

नोट: यह दूरस्थ –

+0

@CarlosHeuberger पर हटाए गए टैग को हटा नहीं देता है आपकी टिप्पणी से पता चलता है कि आपको लगता है कि ऐसा करने का कोई तरीका है, लेकिन ऐसा नहीं है। आप वास्तव में रिमोट पर मौजूद सभी स्थानीय टैग को हटा सकते हैं, लेकिन यह _local टैग को भी हटा देता है जो कभी भी दूरस्थ पर नहीं थे (उदा। अभी तक धक्का नहीं दिया गया है, या केवल स्थानीय उद्देश्यों के लिए टैग)। केवल टैग को हटाने का कोई तरीका नहीं है जिसे दूरस्थ_ पर हटा दिया गया था। –

+0

यह सुनिश्चित नहीं है कि आप क्यों सोचते हैं कि मेरी टिप्पणी यह ​​सुझाव दे रही है कि - मैंने कभी लिखा नहीं है कि ऐसा करने का कोई तरीका है!? मैंने अभी आपके उत्तर का पूरक करने की कोशिश की क्योंकि कहीं भी यह नहीं कहता है कि स्थानीय टैग हटाए नहीं जाते हैं और "स्थानीय टैग अपडेट करते हैं" को समझा जा सकता है और रिमोट पर हटाए गए टैग को भी हटाया जा सकता है। मुझे लगता है कि यह एक स्पष्ट बयान था (बिना छिपे हुए सुझावों के) ... लेकिन मेरी अंग्रेजी शायद मुझे लगता है कि इससे भी बदतर है। –

संबंधित मुद्दे