जॉन पेडी का सही विचार है। 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.3
1.3.17 के रूप में सिर को टैग करें , इसे प्रत्येक सुविधा-प्रगति में विलय कर दें 1.3
, और आगे बढ़ें।
git flow
एक्सटेंशन आपके लिए इन रखरखाव, सुविधा और हॉटफ़िक्स शाखाओं का प्रबंधन करने में मदद करता है। एक बार जब आप वर्कफ़्लो को नीचे लाते हैं, तो यह तुच्छ है और स्रोत कोड प्रबंधन से बड़ी मात्रा में परेशानी लेता है।
मैंने इसे प्रोग्रामिंग टीमों पर किया है, लेकिन मैंने खुद एक प्रोग्रामर के रूप में गहराई से काम नहीं किया है, इसलिए मैं अभी भी अपने दिन-प्रतिदिन वर्कफ़्लो के आसपास अपना सिर प्राप्त कर रहा हूं।
git
प्रत्येक सफल निर्माण के बाद स्वचालित रूप से एक टैग जोड़ सकते हैं ? इसका अतिरिक्त फायदा यह होगा कि यह वास्तव में स्पष्ट करgit
देता है कि कौन से मुद्दों का निर्माण या परीक्षण विफल रहा है, क्योंकि वे बिना टैग किए रहेंगे।