जीआईटी एक SCM कार्यप्रणाली के कार्यान्वयन की तुलना में SCM फ्रेमवर्क के कार्यान्वयन से अधिक है, क्योंकि वास्तव में एक तीसरी कब्ज़ है- और सबसे अधिक दूसरों के लिए बहुत संभव है। यह तीसरी संभावना पर आधारित है rebase
।
rebase
GIT subcommand (अपने विषय शाखा की नोक के लिए अपने शाखाओं बिंदु से आम तौर पर प्रतिबद्ध की एक श्रृंखला लेता है topic
) और उन्हें कहीं और पुन: चलाने के (आमतौर पर अपने एकीकरण शाखा की नोक, जैसे पर master
)। rebase
Subcommand नई करता है, जो एक प्रपत्र समीक्षा करना आसान है कि में प्रतिबद्ध उलटफेर का अवसर देता है पैदा करता है। यह एक नई श्रृंखला की उपज देता है, जो topic
कि एकीकरण शाखा के शीर्ष पर निहित होने के समान है । इस नई शाखा को अभी भी topic
जीआईटी द्वारा बुलाया जाता है, ताकि पुराने संदर्भ को छोड़ दिया जाए। मैं अनौपचारिक topic-0
रूप से आपकी शाखा की मूल स्थिति को लेबल करता हूं topic-1
और इसी तरह इसके विभिन्न रीफैक्टरिंग पर।
यहाँ आपकी topic
शाखा के लिए मेरा सुझाव है :
(वैकल्पिक कदम) आप सहभागी अपने विषय शाखा rebase topic
अपनी शाखाओं मुद्दे पर (देखें --fixup
के लिए विकल्प commit
और -i
और --autosquash
पर विकल्प rebase
) है, जो आप एक तरह से समीक्षा करने के लिए आसान है कि में अपने प्रतिबद्ध पुनर्लेखन के लिए अवसर देता है। इससे एक शाखा निकलती है topic-1
।
आप अपनी विषय शाखा को अपनी एकीकरण शाखा में सबसे ऊपर रखते हैं, एक मर्ज करने के समान है, लेकिन एक मर्ज के साथ इतिहास को प्रदूषित नहीं करता है, जो केवल एक सॉफ्टवेयर इंजीनियरिंग विरूपण साक्ष्य है। इससे एक शाखा निकलती है topic-2
।
topic-2
एक टीम के साथी को भेजें जो इसे टिप के खिलाफ समीक्षा करता है master
।
यदि topic-2
ठीक है तो इसे मास्टर में विलय करें।
नोट शाखाएँ - जहाँ शाखा प्रतिबद्ध वृक्ष को संदर्भित करती है - सभी को GIT द्वारा समान कहा जाएगा, इस प्रकार, प्रक्रिया के अंत में, केवल शाखा topic-2
का GIT में एक नाम होता है।
पेशेवरों:
- समीक्षा में कोई अप्रचलित कोड नहीं।
- कोई सहज "विदेशी मर्ज" समीक्षा (आप 1 में वर्णित घटना)।
- स्वच्छ तरीके से फिर से लिखने का अवसर।
विपक्ष:
- एक शाखा के बजाय
topic-0
, तीन शाखाएँ कलाकृतियाँ हैं topic-0
, topic-1
और topic-2
जो प्रतिबद्ध वृक्ष में बनाई गई हैं। (हालांकि किसी भी समय, उनमें से केवल एक का नाम जीआईटी में है।)
आपके 1 परिदृश्य में «अगर किसी ने" 1. "के बीच कुछ मिला दिया है और "2." »शाखा बिंदु के निर्माण और उस समय के बीच फैले समय को संदर्भित करता है जब आप विलय करने का निर्णय लेते हैं। इस परिदृश्य में «अगर किसी ने" 1. "के बीच कुछ विलय कर दिया है और "2." »रिबास और मर्ज के बीच फैले समय को संदर्भित करता है, जो आमतौर पर बहुत कम है। इस प्रकार, मेरे द्वारा प्रदान किए गए परिदृश्य में, आप «लॉक» master
मर्ज के समय के लिए शाखा को अपने वर्कफ़्लो के बिना सांकेतिक रूप से परेशान कर सकते हैं, जबकि यह 1 परिदृश्य में अव्यावहारिक है।
यदि आप व्यवस्थित कोड समीक्षा कर रहे हैं, तो संभवतः पर्याप्त तरीके (वैकल्पिक चरण) में कमिट को पुनर्व्यवस्थित करना एक अच्छा विचार है।
मध्यवर्ती शाखा कलाकृतियों का प्रबंधन केवल एक कठिनाई प्रस्तुत करता है यदि आप उन्हें रिपॉजिटरी के बीच साझा करते हैं।