एक फिक्स या एक फीचर पर काम करते समय, मैं कभी-कभी अन्य छोटे मुद्दों पर ठोकर खाता हूं, जो कुछ सेकंड में मक्खी पर सुधारा जा सकता है। जब मैं उन्हें तुरंत करता हूं और फिर तैयार फीचर / फिक्स करता हूं, तो कमिट में एक से अधिक चीजें शामिल होती हैं। उदाहरण के लिए "add feature X and code clean up"
या "fix bug X and improved logging"
। इसे दो कमिट में विभाजित करना बेहतर होगा। यदि एक ही फ़ाइल में दो परिवर्तन हुए हैं, तो मैं केवल एक फ़ाइल नहीं जोड़ सकता, कमिट कर सकता हूँ, दूसरे को जोड़ सकता हूँ और फिर दोबारा कर सकता हूँ। इसलिए मुझे निम्नलिखित तीन विकल्प दिखाई देते हैं:
किसी चीज पर काम करते समय गैर-संबंधित चीजों को जानबूझकर अनदेखा करें।
फ़ाइल को दो परिवर्तनों के साथ कॉपी करें, इसे वापस लाएं, इसमें एक बदलाव शामिल करें, कमिट करें, दूसरा बदलाव शामिल करें, फिर से कमिट करें।
छोटी असंबंधित चीज़ों को न बदलें बल्कि उन्हें टूडू सूची में जोड़ें और बाद में उन्हें करें।
निम्नलिखित कारणों से मुझे वास्तव में तीनों विकल्प पसंद नहीं हैं:
यदि कोई छोटी समस्याओं को ठीक नहीं करता है तो कोड की गुणवत्ता को नुकसान हो सकता है। और मुझे बुरा लगता है अगर मैं जानबूझकर बहुत प्रयास किए बिना कुछ सुधारने का मौका चूक जाता हूं।
यह मैनुअल काम को बढ़ाता है और त्रुटि प्रवण होता है।
यह छोटे-छोटे टॉडोस के लिए ठीक है, लेकिन एक टूडू सूची में एक छोटी वस्तु को जोड़ना और बाद में इसे फिर से बनाना अक्सर इसे तुरंत ठीक करने की तुलना में बहुत अधिक समय लगता है।
आप ऐसी स्थितियों को कैसे संभालते हैं?
git add -p
एक बहुत का उपयोग करता हूं जो मुझे अंतःक्रियात्मक रूप से उन फ़ाइलों के भागों का चयन करने देता है जो मैं करना चाहता हूं। यदि सफाई पर्याप्त रूप से अलग है, तो यह करना आसान है। यदि जुदाई अधिक कठिन है, तो मैं एक अस्थायी शाखा पर राज्य को प्रतिबद्ध करता हूं, फिर मैन्युअल रूप से मेरी वास्तविक शाखा में परिवर्तन जोड़ें जब तक कि अस्थायी शाखा में कोई अंतर न हो। इसके लिए बहुत अधिक काम करने की आवश्यकता है, लेकिन मुझे यह जांचने की अनुमति देता है कि प्रत्येक प्रतिबद्ध अपने आप काम करता है।