जॉन पेडी का सही विचार है। git flowइन शाखाओं के वास्तविक प्रबंधन को आसान बनाता है, साथ ही, और शाखा प्रबंधन को स्थानांतरित करने के लिए एक तर्क है git।
चलो एक बुनियादी ठहरनेवाला के साथ शुरू करते हैं git, क्योंकि आप svn-to- gitपरिप्रेक्ष्य से आ रहे हैं । gitनिम्नलिखित पर विचार करें :
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
ऊपर, आप शाखा masterको develop(द्वारा निरूपित \), और शाखा developको featureशाखा। हम उन शाखाओं को एक शाखा के साथ वापस ( /) द्वारा निरूपित ( ) द्वारा मर्ज करते हैं -। (यदि कोई प्रतिबद्ध नहीं है लेकिन मर्ज दाईं ओर है, तो .यह दिखाने के लिए संकेतक हैं कि अगला -अगला प्रतिबद्ध है)।
काफी आसान। अगर हमारी मुख्य रिलीज़ में कोई हॉटफ़िक्स है तो क्या होगा?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
ऊपर, से developशाखा master। जिस बग की खोज की गई masterथी master, उसे ब्रांच करने, उसे ठीक करने और वापस मर्ज करने से तय किया गया था master। हम तो विलय कर masterमें develop, और उसके बाद developमेंfeature2 , जिसमें से नए कोड लुढ़का hotfixइन शाखाओं में।
जब आप feature2वापस मर्ज करते हैं develop, तो इसका इतिहास इसके developसाथ शामिल होता है hotfix। इसी तरह, developमें विलय कर दिया गया है feature2से नए कोड के साथ masterहै, तो विलय developवापस करने के लिए masterके रूप में यह आधारित है, बिना किसी अवरोध के क्या होगा पर कि में प्रतिबद्ध masterहै कि समय-जैसे आप से branched था पर masterउस बिंदु पर।
तो यहाँ ऐसा करने का एक और तरीका है।
master--..........-........-
\ /\ /
---1.0-- --1.1--
आपका 1.0 विज्ञप्ति tagged- मिल 1.0.1, 1.0.2, 1.0.3, और इसके आगे।
अब यहाँ एक चाल है: आपको 1.0 में एक बग मिला और यह 1.1, 1.2, और 1.3 को प्रभावित करता है। आप क्या करते हैं?
आप अपने नवीनतम या जल्द से जल्द बनाए गए रिलीज को बंद कर देते हैं और इसे ठीक कर देते हैं। तो फिर आप अपने नए मर्ज hotfixमें शाखा 1.3में -और 1.2, 1.1, और 1.0। रखरखाव संस्करण शाखाओं में से प्रत्येक से शाखा मत करो; आपस में नहीं मिलाते 1.0में masterया मर्ज masterमें वापस 1.0। एक hotfixशाखा लें और इसे अपनी सभी संस्करण शाखाओं में मिला लें। यदि संघर्ष हैं, तो यह आपको बताएगा; परिवर्तन सही हैं ( git diffयह आपका मित्र है) सुनिश्चित करने के लिए अपने कोड की समीक्षा करें ।
अब उस विशिष्ट परिवर्तन को हर जगह लागू किया जाता है। वंशावली शाखा है, लेकिन यह ठीक है। यह हाहाकार नहीं है। 1.31.3.17 के रूप में सिर को टैग करें , इसे प्रत्येक सुविधा-प्रगति में विलय कर दें 1.3, और आगे बढ़ें।
git flowएक्सटेंशन आपके लिए इन रखरखाव, सुविधा और हॉटफ़िक्स शाखाओं का प्रबंधन करने में मदद करता है। एक बार जब आप वर्कफ़्लो को नीचे लाते हैं, तो यह तुच्छ है और स्रोत कोड प्रबंधन से बड़ी मात्रा में परेशानी लेता है।
मैंने इसे प्रोग्रामिंग टीमों पर किया है, लेकिन मैंने खुद एक प्रोग्रामर के रूप में गहराई से काम नहीं किया है, इसलिए मैं अभी भी अपने दिन-प्रतिदिन वर्कफ़्लो के आसपास अपना सिर प्राप्त कर रहा हूं।
gitप्रत्येक सफल निर्माण के बाद स्वचालित रूप से एक टैग जोड़ सकते हैं ? इसका अतिरिक्त फायदा यह होगा कि यह वास्तव में स्पष्ट करgitदेता है कि कौन से मुद्दों का निर्माण या परीक्षण विफल रहा है, क्योंकि वे बिना टैग किए रहेंगे।