मंचन क्षेत्र का उद्देश्य आपकी प्रतिबद्धता के लिए एक लचीला स्थान होना है। मुझे लगता है कि यह स्पष्ट हो जाएगा यदि आप संस्करण नियंत्रण प्रणालियों के विपरीत गिट को नियंत्रित करते हैं जो केंद्रीयकृत हैं, जैसे कि तोड़फोड़।
विनाश
तोड़फोड़ में आप अपने काम की नकल की कुछ फ़ाइलों का चयन कर सकते हैं। लेकिन केवल पूरी फाइलें। अब: क्या होगा यदि आप फाइल को स्टेज करना चाहते हैं A
, फाइल को नहीं B
, और फाइल के हिस्से जो फाइल C
से संबंधित हैं, A
अभी तक उन हिस्सों को नहीं जो फाइल में बदलाव पर निर्भर करते हैं B
(तब से आपको कमिटमेंट में समस्या होगी)।
Git
Git इसे प्रदान करता है मंचन दूसरी कार्य प्रतिलिपि के रूप में प्रदान करता है। मंचन क्षेत्र के भीतर आप एक स्नैपशॉट डाल रहे हैं जिसे आप प्रतिबद्ध करेंगे (मोटे तौर पर बोलना)।
इसलिए मचान क्षेत्र के भीतर आप एक स्नैपशॉट बना सकते हैं जिसमें परिवर्तन A
और फ़ाइल का एक संस्करण शामिल है C
जो केवल परिवर्तनों को दर्शाता है A
।
विशिष्ट प्रश्नों के लिए
आप किसी भी बिंदु पर आप चाहते हैं मंच कर सकते हैं। इससे पहले कि मैं कमिटमेंट लॉन्च करूं, मैं व्यक्तिगत रूप से सही स्टेज करना पसंद करता हूं।
जब किसी फ़ाइल में परिवर्तन हुआ है और तब उस फ़ाइल को कार्य प्रतिलिपि में बदल रहा है, तो आपने निश्चित रूप से चरणबद्ध फ़ाइल को परिवर्तित नहीं किया है। आप या तो यह तय कर सकते हैं कि क्या उन लोगों को भी मंच देना है या नहीं और न ही मंच परिवर्तन करना है। यानी अगर आप दौड़ते git gui citool
हैं तो आपको मंचन और अस्थिर संस्करण (लाइन-वार मंचन और प्रतिबद्धता के लिए अच्छे और सरल उपकरण) के अंतर दिखाई देंगे।
Git यहां सतर्क है, जो शायद एक अच्छी बात है।
सामान्य प्रतिबद्ध रणनीति: बारीक काम करता है
मुझे लगता है कि जब "मुझे कब मंच देना चाहिए" सवाल के बारे में बात करनी चाहिए, तो व्यक्ति को प्रतिबद्ध आदतों के बारे में भी बात करनी चाहिए।
केंद्रीकृत वीसीएस
केंद्रीकृत संस्करण नियंत्रण प्रणालियों में जहां आप एक केंद्रीय सर्वर के लिए प्रतिबद्ध होते हैं, आपके लिए सहकर्मियों के लिए यह महत्वपूर्ण था कि आपके कमिट पूर्ण और अच्छी तरह से जांच किए जाएं। इसलिए लोग अक्सर ऐसा करने की कोशिश करते हैं और फिर त्रुटि की संभावना को कम करने के लिए पूर्ण फ़ाइलों की स्थिति के लिए प्रतिबद्ध होते हैं। इस प्रकार, एक कमिट काफी बड़ी मात्रा में होती है जिसमें बहुत सारे बदलाव शामिल होते हैं (यदि वे सरल फिक्स नहीं हैं)। एक प्रतिबद्ध में परिवर्तन पूरी तरह से असंबंधित हो सकते हैं।
Git
Git में एक कमिट स्थानीय रूप से किया जाता है, केवल उन्हें सर्वर पर धकेलने से वह सार्वजनिक हो जाता है। इसलिए कमिट एक अर्थ में सस्ता है। तोड़फोड़ की भावना में एक प्रतिबद्ध बल्कि कई के git commit
बाद की तुलना में है git push
। यह अंतर मायने रखता है।
Git आपको कोड की एकल लाइनें बनाने की अनुमति देता है, भले ही आपने अन्य पंक्तियों को उसी फ़ाइल में बदल दिया हो। यह आपको बहुत सारे लाभ प्रदान करता है क्योंकि आप उदाहरण के लिए 100-350 की नई लाइनों को पेश करते हुए लाइनों को 300-350 में बदलकर सुरक्षा बगफिक्स बना सकते हैं।
- आप अलग-अलग कमिट में अलग-अलग बदलाव कर सकते हैं। यह उन्हें आपके संस्करण इतिहास में अच्छी तरह से अलग करता है और यहां तक कि आपको एक को वापस करने की अनुमति देता है, लेकिन दूसरे को नहीं।
- जरूरी नहीं कि आपकी कमिटमेंट को आपकी वर्किंग कॉपी की "कंपाइलिंग" स्थिति को प्रतिबिंबित करना हो (हालांकि मैं इसे उसी तरह रखने की कोशिश करता हूं)।
तो "गुणवत्ता नियंत्रण" और एक प्रतिबद्ध में निर्माण-गारंटी कहां है कि एक तोड़फोड़ उपयोगकर्ता की उम्मीद करेगा? इसे git में अन्य क्रियाओं में स्थानांतरित कर दिया गया है। आप अभी भी सार्वजनिक रिपॉजिटरी में प्रोग्राम के कामकाज की स्थिति को बाहर करना चाहते हैं। इसलिए आप यह सुनिश्चित करते हैं कि परीक्षण सफल रहे हैं और कार्यक्रम आपके बदलावों को आगे बढ़ाने से पहले काम करता है।
इसके अलावा, शाखाओं का अधिकतम उपयोग करने का प्रयास करें। जब बहुत सारे छोटे बदलाव आते हैं, तो आप एक बहुत बड़े संस्करण के इतिहास के साथ समाप्त हो जाएंगे। यदि आप शाखाओं में काम करते हैं, तो आप शाखा नाम से उन बारीक कामों को वर्गीकृत कर सकते हैं और फिर उन्हें वापस मर्ज कर सकते हैं (विकल्प --no-ff
यह भी संरक्षित करेगा कि ये सुविधाएँ एक अद्वितीय शाखा में रहती थीं)।
यानी आप master
शाखा में विलय की आदत तभी रख सकते हैं , अगर शाखा अच्छी स्थिति में हो। आप मील के पत्थर और रिलीज को ट्रैक करने के लिए टैग का भी उपयोग कर सकते हैं।
अब मंचन करने के लिए वापस आने के लिए: एक बार जब आप प्रति प्रतिबद्ध कुछ पंक्तियाँ करते हैं, तो आप सीधे आने से पहले चरणबद्ध होंगे। (कम से कम यह है कि मैं इसे कैसे करता हूं)।
git diff
औरgit diff --cached
अच्छे हैं, लेकिन कभी-कभी मैं और अधिक चाहता हूं)।