जब तक मैं के लिए तैयार हूँ विलय अपनी शाखा में वापस बढ़ने लगता है (जोर मेरा)
इनसे निपटने में संघर्ष git merge
अक्सर सरल होता है git rebase
। Git मर्ज में आप उन फ़ाइलों की पूरी सूची देख सकते हैं जिन्हें एक ही बार में संशोधित किया गया है। अन्य सहकर्मियों द्वारा चाहे जितने कमिट किए गए हों, आपको एक बार विलय करना होगा । रिबास वर्कफ़्लो के साथ, आप एक ही टकराव को समाप्त कर सकते हैं और उन्हें मैन्युअल रूप से समीक्षा करना होगा। आप 13 वीं प्रतिबद्धता को समाप्त कर सकते हैं और महसूस कर सकते हैं कि आप सुरंग से प्रकाश नहीं देख सकते हैं ।
अपने अनुभव से, जब मैंने भोलेपन से बार-बार होने वाले संघर्षों को हल करने का प्रयास किया, तो मैंने किसी के संशोधनों को खोने या एक आवेदन के साथ समाप्त कर दिया जो कि संकलन भी नहीं था। अक्सर मैंने और सहकर्मियों ने बहुत सारे काम किए लेकिन संघर्षों की पुनरावृत्ति की जटिलता से इतना अभिभूत हो गए कि मुट्ठी भर विद्रोह के बाद हमें अपना पिछला काम छोड़ना पड़ा।
मैं आपको कुछ तकनीकों का सुझाव देने जा रहा हूं, लेकिन वे केवल मर्ज को कार्य को स्वचालित करने की तुलना में आसान बनाने में मदद कर सकते हैं।
- संसाधन / भाषा फ़ाइलें । यदि आपके पास संसाधन फ़ाइल में योगात्मक परिवर्तन हैं, तो सुनिश्चित करें कि आप हमेशा उन्हें फ़ाइल के अंत तक ले जाते हैं ताकि आप दूसरों के परिवर्तनों के विरुद्ध अपने परिवर्तनों को आसानी से याद कर सकें । आप नीचे अपने परिवर्तनों को कॉपी या पेस्ट करने में सक्षम हो सकते हैं, या बस संघर्ष मार्करों को हटा सकते हैं
- करना। नहीं। पूर्ण रूप से। पुन: प्रारूप । दैनिक कार्य के दौरान न तो आप और न ही आपके साथी डेवलपर्स "बड़े पैमाने पर कोड सुधार" करेंगे। कोड सुधारक संघर्ष प्रबंधन में अत्यधिक सकारात्मक संख्या जोड़ते हैं। कोड सुधार किया जा सकता है
- आकस्मिक रूप से, जैसे प्रत्येक डेवलपर द्वारा प्रत्येक प्रतिबद्ध पर, जैसे ही वे एक स्वचालित उपकरण का उपयोग करते हैं (जैसे कि एक्लिप्स में सेव पर पुन: स्वरूपित करने का विकल्प है, वेनिला विज़ुअल स्टूडियो के पास कोई नहीं है)। बिल्कुल हर डेवलपर को एक समान कोड स्वरूपण मानकों का उपयोग करना चाहिए, जो आपके आईडीई द्वारा खाए गए प्रारूप फ़ाइल में कोडित है। आपको एक विचार देने के लिए, अगर यह 4 रिक्त स्थान या 2 टैब है तो यह कोई फर्क नहीं पड़ता, लेकिन यह वास्तव में मायने रखता है अगर हर कोई समान का उपयोग करता है।
- रिलीज से ठीक पहले, एक टीम लीडर द्वारा। यदि एक "कोड रिफॉर्मैट" कमिट होता है, जब लोग शाखाओं पर काम नहीं कर रहे होते हैं, यानी शाखा से पहले, चीजें आसान हो जाएंगी
- सहकर्मियों के बीच विभाजन के कार्य की समीक्षा करें । यह एक ऐसा हिस्सा है जहां सबसे अधिक इंजीनियरिंग आती है। जैसा कि अन्य उत्तरों द्वारा बताया गया है, यह डिज़ाइन गंध है यदि विभिन्न कार्य करने वाले कई डेवलपर्स को समान संसाधनों को स्पर्श करना है। आपको अपने टीम लीडर से चर्चा करनी होगी कि प्रत्येक समवर्ती डेवलपर द्वारा किस हिस्से को संशोधित किया जाना है।
मैंने अपनी टीमों में गिट वर्कफ्लोज़ में कुछ बुरी आदतें देखी हैं। अक्सर लोग अपनी शाखाओं में ओवरकम करते हैं। मैंने व्यक्तिगत रूप से 10 "20" लेबल वाले एक डेवलपर को "फिक्स" के रूप में देखा, प्रत्येक एक या दो पंक्तियाँ। हमारी नीति यह है कि आपको विचार देने के लिए JIRA टिकटों के साथ कमिट किया जाता है।
@JacobRobbins git rebase
एक दैनिक कार्य करने का सुझाव देता है । मैं उनके दृष्टिकोण को आगे बढ़ाना चाहूंगा।
सबसे पहले, कम से कम एक बार कमिट की संख्या को कम करने के लिए रिबास का उपयोग करें। और मूल विकसित शाखा पर ही रिबास करें , जो आपके द्वारा शाखित की गई प्रतिबद्धता है। जब मैं मुट्ठी भर कहता हूं, तो मेरा मतलब 3 या 4 हो सकता है (जैसे सभी फ्रंट एंड, सभी बैक एंड, सभी डेटाबेस पैच) या कोई भी मानवीय-उचित आंकड़ा। आपके द्वारा उन्हें समेकित करने के बाद, fetch
अपस्ट्रीम शाखा पर अपने रिबास का उपयोग करें और काम करें। यह आपको संघर्ष से नहीं बचाएगा जब तक कि आपकी टीम अपने दृष्टिकोण की समीक्षा नहीं करती है, लेकिन यह आपके जीवन को कम दर्दनाक बना देगा।
यदि आपके पास विशिष्ट कार्यों पर अतिरिक्त प्रश्न हैं, तो बेझिझक खोज करें और Stackoverflow पर पूछें।
नो-रिफॉर्मैट और बॉय स्काउट नियम के बारे में [संपादित करें]। मैंने आरई-फॉर्मेट को थोड़ा सा पुन: प्रारूपित किया है कि मैं जो अर्थ रखता हूं वह कोड सहित संपूर्ण स्रोत फ़ाइल को खरोंचने से प्रारूपित करने का कार्य है, जो आपके द्वारा छुआ नहीं गया था। हमेशा अपने खुद के कोड को प्रारूपित करने के विपरीत, जो पूरी तरह से लड़का-स्काउटी है, कई डेवलपर्स, जिनमें स्वयं भी शामिल हैं, का उपयोग आईडीई की क्षमताओं के साथ पूरी फ़ाइल को पुन: स्वरूपित करने के लिए किया जाता है। जब फ़ाइल को दूसरों द्वारा छुआ जाता है, भले ही प्रभावित लाइनें उनकी सामग्री और शब्दार्थ में नहीं बदली जाती हैं, लेकिन गिट इसे एक संघर्ष के रूप में देखेंगे। केवल एक बहुत ही शक्तिशाली भाषा-जागरूक संपादक सुझाव दे सकता है कि संघर्ष केवल स्वरूपण और ऑटो-मर्ज के सर्वोत्तम-स्वरूपित टुकड़े से संबंधित है। लेकिन मेरे पास ऐसे किसी भी उपकरण का सबूत नहीं है।
आखिरकार, लड़के स्काउट नियम आपको अन्य लोगों की गंदगी को साफ करने के लिए बाध्य नहीं करता है। बस आपका।