2013-02-09 13 views
13

AFAIK, git push --tag रिमोट/टैग के तहत रिमोट के लिए प्रत्येक टैग को धक्का देता है। मैं जानना चाहता हूं कि गिट में कोई तरीका है जो केवल कुछ टैग को धक्का देता है जो वाइल्डकार्ड से मेल खाते हैं या regexp?गिट: केवल विशिष्ट टैग को धक्का दें

उदाहरण के लिए, मेरे रेपो में टैग v1.0, v1.1, v2.0 और v2.1 है। मैं केवल v2.* को धक्का देना चाहता हूं। मैं

git push <repo> refs/tags/v2.* 

की कोशिश की और त्रुटि

मिला

घातक:। Refspec के दूरस्थ हिस्से में refs/टैग/वी 2 एक मान्य नाम नहीं है *

बेशक

, मैं हमेशा क्या कर सकते हैं

cd .git && ls refs/tags/v2.* | xargs git push <repo> 

लेकिन यह गता की गंध नहीं करता है।

उत्तर

14
git tag | grep '^v2\.' | xargs --no-run-if-empty git push <repo> 
  • .git निर्देशिका नहीं हो सकता है, ऐसा नहीं है कि वहाँ सब पर हो सकता है। Submodules में रूट रिपोजिटरी को इंगित करने वाली फ़ाइल है। या आप GIT_DIR कहीं और सेट कर सकते हैं।
  • जब कोई टैग आपके मानदंड से मेल नहीं खाता है, तो आप पुश नहीं करना चाहते हैं।
+1

यदि "v2.0" नाम की एक स्थानीय शाखा है तो क्या होगा? 'गिट पुश' अस्पष्ट नाम कैसे हल करता है? –

+0

एक ही नाम के टैग और शाखाएं रखना बुरा विचार है। गिट इस अच्छी तरह से नहीं है। टैग के लिए 'v2.0' और शाखाओं के लिए' स्थिर-2.x' जैसे कुछ का उपयोग करें। उदाहरण: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary –

+2

देखें ['gitrevisions'] (http://www.kernel.org/ पब/सॉफ्टवेयर/एसएमएम/गिट/डॉक्स/gitrevisions.html) ("जब अस्पष्ट, निम्नलिखित नियमों में पहला मैच लेकर असंबद्ध है")। – Joe

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