मैं एक git शाखाओं के मॉडल के साथ एक परियोजना है जो लगभग nvie के git-flow का अनुसरण करता है ।
हमारी रिलीज़ शाखाओं का नाम वीवीआर प्रारूप में रखा गया है , जैसेv1.5.2
एक बार एक रिलीज शाखा को उत्पादन के लिए हरी बत्ती दी जाती है, हम शाखा को बंद कर देते हैं, इसे मास्टर में विलय करके, एक टैग लागू करते हैं, और फिर शाखा को हटाते हैं।
जैसे ही हम तुरंत रिलीज़ शाखा को हटाते हैं, हम उसी पहचानकर्ता को शाखा को टैग करने के लिए उपयोग कर रहे हैं, उदाहरण के लिए v1.5.2
यहां वे कमांड हैं जिनका उपयोग हम एक रिलीज़ शाखा को बंद करने के लिए करेंगे:
$ git checkout master
$ git merge v1.5.2
$ git tag -a v1.5.2 -m "Version 1.5.2 - foo bar, baz, etc"
$ git branch -d v1.5.2
$ git branch -dr origin/v1.5.2
$ git push origin :v1.5.2
$ git push
$ git push --tags
यह अधिकांश मामलों में काम करता प्रतीत होता है, हालाँकि यह उस परिदृश्य में एक समस्या का कारण बन रहा है जहाँ git रेपो (उदाहरण के लिए एक अन्य देव मशीन, या मंचन वातावरण) का एक और उदाहरण v1.5.2 शाखा का एक स्थानीय चेकआउट है।
git push origin :v1.5.2
आदेश दूरदराज में शाखा हट जाएगा, लेकिन स्थानीय (यदि वह मौजूद) सभी रेपोस में शाखा के संस्करण को नहीं हटाता।
यह v1.5.2
उन संदर्भों में चेकआउट की कोशिश करते समय अस्पष्ट संदर्भ की ओर जाता है :
$ git checkout v1.5.2
warning: refname 'v1.5.2' is ambiguous.
क्या शाखाओं, जैसे release-v1.5.2
, या के लिए एक अलग वाक्यविन्यास का उपयोग किए बिना इसे टाला जा सकता है v1.5.2-rc
?
या क्या यह अपरिहार्य है, और इसलिए एक मूल रूप से बुरा विचार एक हटाए गए शाखा के समान नाम के साथ एक टैग बनाने के लिए है?
git checkout
एक अस्पष्ट संदर्भ होने पर शाखा पर टैग की जाँच करेंगे, हालांकि यह वह व्यवहार नहीं है जिसे मैं देख रहा हूं, रेफ: gist.github.com/tommarshall/9376724 । क्या यह कुछ और है जो गिट के अधिक आधुनिक संस्करण में बदल गया है? क्या कोई ध्वज है जिसे मैंgitconfig
इस व्यवहार को प्राप्त करने के लिए सेट कर सकता हूं ?