आप तुरंत मर्ज किए गए परिवर्तन क्यों नहीं करेंगे?


16

मेरा कार्यालय हमारे संस्करण नियंत्रण के लिए Git और SourceTree का उपयोग करता है। यह तब आया क्योंकि जब मैं इसमें शामिल हुआ था तो शून्य संस्करण नियंत्रण था और सोर्सट्री एकमात्र प्रणाली थी जिसका मैंने कभी उपयोग किया था। मैं किसी भी तरह से एक विशेषज्ञ नहीं हूं, लेकिन मैं अपने सहकर्मियों में से सबसे अनुभवी हूं इसलिए मैं हर किसी को सही तरीके से गिट का उपयोग करने और वे जो भी गलतियां कर रहे हैं उसे ठीक करने के लिए सिखाने के लिए जिम्मेदार वास्तविक विशेषज्ञ हूं।

मैं एक ट्यूटोरियल दस्तावेज़ बना रहा हूँ जो Git और SourceTree से होकर गुजरता है और प्रक्रिया के हर चरण को समझाता है। पुल प्रक्रिया में, सोर्सट्री संवाद आपको "तुरंत मर्ज किए गए परिवर्तन" विकल्प का चयन करने की अनुमति देता है। मैं समझता हूं कि यह क्या करता है और यह क्यों उपयोगी है। मुझे समझ में नहीं आता है कि कोई भी इस सुविधा का उपयोग क्यों नहीं करना चाहेगा ।

क्या कोई समझा सकता है कि आप कभी भी अपने मर्ज किए गए परिवर्तनों को स्वचालित रूप से क्यों नहीं कराना चाहेंगे? मैं तर्क को समझने की कोशिश कर रहा हूं, ताकि मैं इस सुविधा की उपयोगिता को बेहतर ढंग से समझा सकूं और इस बात का अंदाजा लगा सकूं कि भविष्य में क्या देखने को मिलेगा।

संपादित करें: मुझे विश्वास नहीं है कि मेरा प्रश्न लिंक किए गए प्रश्न का एक डुप्लिकेट है। जुड़ा हुआ प्रश्न मोटे तौर पर पूछ रहा है कि कितनी बार प्रतिबद्ध है। मैं इस बारे में पूछ रहा हूं कि कोई व्यक्ति सोर्सट्री में विलय से संबंधित एक विशिष्ट सुविधा का उपयोग क्यों नहीं करेगा।



1
क्या आप अच्छे कारण चाहते हैं? क्योंकि मैं चेक कोड में देरी के कई कारण प्रदान कर सकता हूं जो मैंने सुना है कि लोग जंगली में कहते हैं, लेकिन उनमें से कुछ अच्छे कारण हैं।
whatsisname

एकमात्र कारण जो मैं सोच सकता हूं, जब मर्ज संघर्ष के कारण मर्ज विफल हो जाता है। अगर ऐसा होता है, लेकिन SourceTree प्रतिबद्ध नहीं होगा।
रॉबर्ट हार्वे

एक साइड नोट पर: आप अपना ट्यूटोरियल क्यों लिख रहे हैं? bitbucket में पहले से ही एक बढ़िया ट्यूटोरियल है। confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace हम Bitbucket का उपयोग नहीं कर रहे हैं; हम सब कुछ एक स्थानीय नेटवर्क पर रखते हैं। मैं एटलसियन के महान ट्यूटोरियल का संदर्भ देता हूं , लेकिन मैं चाहता था कि कुछ और संक्षिप्त रूप मैं उन लोगों को सौंप सकूं जो Git और संस्करण नियंत्रण के लिए एकदम नए थे। यह वास्तव में एक परिचय और प्रक्रियात्मक है "यह है कि आप कैसे और क्यों / पुश / पुल / आदि करते हैं" ताकि लोग जमीन पर चल रहे हिट कर सकें।
डेविड के

जवाबों:


26

मैं इस सुविधा का उपयोग नहीं करना चाहूंगा।

यह तथ्य कि कोई संघर्ष नहीं था, इसका मतलब है कि मेरी शाखा में विलय किए जा रहे बदलाव मोटे तौर पर कोड की समान पंक्तियों में नहीं हैं, जैसा कि मैंने किया है। इसका अर्थ यह नहीं है कि वे परिवर्तन मेरे परिवर्तनों के अनुकूल हैं। इसका मतलब यह नहीं है कि कोड संकलित करेगा, या कि कोड काम करेगा, या कि परीक्षण पास होंगे।

दूसरे शब्दों में, इस विकल्प का उपयोग करके मैं संभावित रूप से कोड की एक स्थानिक प्रतिबद्धता के साथ समाप्त होता हूं जो एक अच्छी स्थिति में नहीं हो सकता है और जिसे ठीक करने के लिए एक नई प्रतिबद्ध की आवश्यकता होती है। जैसा कि मैंने वैसे भी यह काम कर रहा हूँ, और प्रतिबद्ध नदी के ऊपर के रूप में मैं इस नकली धक्का कभी नहीं करना चाहिए, यहां तक कि नहीं गलती से (अच्छाई न करे, किसी को तो मर्ज हो जाती है कि कुछ अन्य शाखा में!), मैं इस बनाने के लिए कोई कारण नहीं देख पहले में प्रतिबद्ध स्थान।


संभवतः, आप सुविधा शाखाएँ बना रहे हैं, और मुख्य शाखा पर हर छोटे परिवर्तन का विलय नहीं कर रहे हैं। जब तक कई लोग एक ही फीचर शाखा पर एक ही वर्ग पर काम नहीं कर रहे हैं, तब तक विलय की सुविधा शाखा में टकराव की संभावना नहीं है।
रॉबर्ट हार्वे

4
@RobertHarvey हाँ, लेकिन मैं अक्सर अपनी शाखा में मुख्य शाखा का विलय करता हूँ। आपकी टिप्पणी में एक छिपी हुई धारणा है कि विभिन्न विशेषताएं स्वाभाविक रूप से विभिन्न वर्गों / मॉड्यूल को छूएंगी, लेकिन हर कोई भाग्यशाली नहीं है। (गलत) भाग्य से आपके पास एक ईश्वर वर्ग है जो हर किसी को कुछ भी करने की ज़रूरत है, जिसे छूने की ज़रूरत नहीं है, और आप इसके बारे में बहुत कुछ नहीं कर सकते। इसके अलावा क्रॉस-कटिंग फीचर्स हैं (कुछ लाइब्रेरी को अपग्रेड करें, जिसके कारण कोड की प्रत्येक 10 लाइनों में से एक को बदलना होगा ...) मुझे पता है कि तर्क "वहां पहुंचने की कोशिश नहीं करें", लेकिन क्या होगा यदि आप पहले से ही वहां हैं? माफी से अधिक सुरक्षित।

2

मर्ज के बाद, स्थानीय रेपो में फ़ाइलों में परिवर्तन हो सकते हैं। ये परिवर्तन स्वचालित रूप से स्थानीय के लिए प्रतिबद्ध नहीं हैं, जब तक कि आप "तुरंत विलय किए गए परिवर्तनों को प्रतिबद्ध नहीं करते"।

यदि आप उस विकल्प को सेट नहीं करते हैं, तो फ़ाइलें SourceTree में अप्रयुक्त परिवर्तनों के रूप में दिखाई देती हैं।

ऐसा इसलिए है क्योंकि जब तक आप स्पष्ट रूप से इसे नहीं बताते हैं, तब तक Git स्वयं प्रतिबद्ध नहीं होता है, और SourceTree एक Git GUI है। "कमेटी मर्ज किए गए बदलाव तुरंत" विकल्प इतना विकल्प नहीं है, क्योंकि यह एक कमांड शॉर्टकट है।

इसलिए, इस सुविधा का उपयोग नहीं करने का कारण स्वयं स्पष्ट है: आप प्रतिबद्ध रूप से प्रदर्शन करना चाहते हैं, या बिल्कुल नहीं।

मान लें कि आप अपनी सुविधा शाखा में मास्टर को खींचते हैं। एक सहकर्मी एक अलग सुविधा शाखा पर काम कर रहा है। इस सहकर्मी के पास चीजों को तोड़ने का इतिहास है। मर्ज में इस सहकर्मी द्वारा साझा साझा कोड में परिवर्तन शामिल हैं। तो, आप - टीम के बाकी के साथ - नहीं है मर्ज किए गए परिवर्तन हो जब तक आप इस सह कार्यकर्ता है कि अपने काम को प्रभावित करेगा द्वारा किए गए कोई बदलाव नहीं देखते हैं यह सुनिश्चित करें कि कर रहे हैं।

सिर्फ इसलिए कि कोई अच्छा कारण नहीं है - सिद्धांत रूप में - इस सुविधा का उपयोग नहीं करने के लिए, वास्तव में, अच्छे कारणों की कोई भी संख्या हो सकती है। आपके ट्यूटोरियल के संबंध में, मैं बस यही कहूंगा कि "100 में से 99 बार, यह वह विकल्प है जिसका आप उपयोग करना चाहते हैं"। मुझे नहीं लगता कि आपको वास्तव में इसका उपयोग न करने के बारे में विस्तार से जाने की आवश्यकता है, खासकर अगर अन्य संस्करण नियंत्रण के लिए नए हैं। यह सब इस बात पर निर्भर करता है कि आप ट्यूटोरियल के लिए कितनी गहराई में हैं।


2

यदि आप अपने कमिट्स को ऑटो पुश करने के लिए पोस्ट कमिट हुक का उपयोग कर रहे हैं (जैसे कि /programming//a/7925891/6781678 ), तो आपको इस विकल्प की आवश्यकता हो सकती है ताकि कुछ गुणवत्ता वाले संदिग्ध को धक्का देने से बचा जा सके।

मैं कभी भी उपयोग नहीं करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.