2011-09-15 7 views
10

मैं रात में अपने काम को कई फाइलों के लिए एक ही प्रतिबद्धता से बचा रहा हूं। मुझे आश्चर्य है कि प्रत्येक फ़ाइल के लिए प्रतिबद्ध होना बेहतर होगा लेकिन यह बहुत अधिक काम की तरह लगता है।गिट प्रतिबद्ध शैली: सभी बदली गई फ़ाइलों को एक समय में एक या एक बार में?

मुझे चीजों के रास्ते में कोई समस्या नहीं है, लेकिन मैं अपना कोड गिटहब पर डालने की योजना बना रहा हूं और मैं इसे समझना आसान बनाना चाहता हूं।

मुझे आश्चर्य है कि आप में से बाकी जो गिट का उपयोग कर रहे हैं। इसके अलावा यदि आप इसे मेरे लिए जादू कर सकते हैं। मैं गिट के लिए नया हूं और मैं विंडोज़ में टोर्टोइस गिट और गिटक का उपयोग कर रहा हूं।

उत्तर

18

कब प्रतिबद्ध होना है और क्या करना है एक कला है, और कोई काला और सफेद नियम नहीं हैं। ऐसा कहा जा रहा है कि ऐसी आदतें हैं जो दूसरों की तुलना में समझना आसान होती हैं।

सामान्यतः, मुझे लगता है कि आपको समझने के लिए अपने कामों को अनुकूलित करना चाहिए - यदि आप वापस जाते हैं और प्रतिबद्धता के लिए अंतर पढ़ते हैं, तो क्या आप यह समझ सकते हैं कि आपने परिवर्तनों में क्या किया है?

आप अधिक विशिष्ट होना चाहते हैं, तो यहाँ मैं क्या लगता है कर रहे हैं और क्या न करें की एक लंबी सूची है:

  • हर एक छोटे से बदलाव के बाद प्रतिबद्ध नहीं - हर पंक्ति बदल गया है, हर फ़ाइल परिवर्तित , आदि
  • पूरे दिन काम न करें और दिन के अंत में एक विशाल प्रतिबद्धता बनाएं।
  • विभिन्न सुविधाओं के लिए अलग-अलग काम करें - उदा। विकासशील फीचर बनाम फिक्सिंग बग # 2।
  • फ़ाइलों को स्थानांतरित/नाम बदलने के लिए एक अलग प्रतिबद्धता करें, क्योंकि गिट के लिए इस तरह से ट्रैक करना आसान है। आप एक परिवर्तन आपके द्वारा किए गए नापसंद करते हैं, तो इसे पूर्ववत यह आसान है के बाद भी नए परिवर्तन शीर्ष पर ढेर कर दिया है:
  • revertability के लिए अनुकूलन के बारे में सोचते हैं?
+2

+1 विशेष रूप से रिकॉर्डिंग के लिए एक तंत्र के रूप में संस्करण नियंत्रण की धारणा के लिए इतना है कि आप अलग-अलग परिवर्तन पूर्ववत कर सकते हैं। – tripleee

+0

धन्यवाद।तार्किक परिवर्तनों को अलग करने की दिशा में मेरी पूर्वाग्रह 'गिट रिवर्ट' और 'गिट चेरी-पिक' के उपयोग की आसानी से प्रेरित है, और [डार्क्स] (http://en.wikipedia.org/wiki/DARCS) द्वारा भी बदलती है जो बदलती है स्नैपशॉट-उन्मुख के बजाय-केंद्रित। – Nayuki

10

"आराम से समझने के लिए" भी मतलब है:

  • करता ही नहीं, "चौकी" का प्रतिनिधित्व (जैसे वे अगर आप प्रतिबद्ध प्रत्येक फ़ाइल संशोधन के बाद), लेकिन कोड का एक सुसंगत राज्य
  • git bisect करने के लिए आसान (यानी प्रत्येक के लिए प्रतिबद्ध एक कार्य, जो संकलित में एक परिवर्तन का प्रतिनिधित्व करते हैं और एक विकास या एक नई सुविधा है, और एक जोड़ें "चौकी प्रतिबद्ध" चाहिए, जो git bisect रास्ता बहुत जल्दी विफल रहता होगा)

देखें "understanding the Git workflow" अधिक के लिए: यदि आप अंतर करने के लिए की जरूरत है:

  • निजी शाखाओं (है कि आप धक्का कभी नहीं) है, जहां आप किसी भी समय मूल रूप से प्रतिबद्ध कर सकते हैं और
  • सार्वजनिक शाखाओं (कि आप करेंगे गिटहब पर धक्का), जिसे साफ-सफाई करने और सार्थक काम करने की आवश्यकता है।

तो "fast-forward" merge that Git uses by default पर ध्यान दें: उन शाखाओं के इतिहास को साफ़ करना न भूलें जिन्हें आप सार्वजनिक शाखाओं में उस तरह से विलय करने वाले हैं।

+1

+1 'गिट बिसेक्ट' बिंदु विशेष रूप से महत्वपूर्ण है, मुझे लगता है - जब आपका इतिहास सबसे छोटी चीजों से बना होता है जो परिवर्तनों का प्रतिनिधित्व करते हैं जो एक साथ समझ में आते हैं, बग बाईसेशन एक खुशी है ... –

+2

क्या आप समझा सकते हैं कि चेकपॉइंट प्रतिबद्धता क्या है – loop

+1

@test: आलेख से उद्धरण "गिट वर्कफ़्लो को समझना", चेकपॉइंट का प्रतिनिधित्व करता है "लगातार काम करता है जो आपके काम का बैक अप लेता है लेकिन कोड को अस्थिर स्थिति में कैप्चर करता है"। चेकपॉइंट प्रतिबद्धता वाला मुद्दा यह नहीं है कि इसमें एक फ़ाइल या कई फ़ाइल शामिल हैं, लेकिन यह एक सार्थक परिवर्तन और (बदतर) का प्रतिनिधित्व नहीं करती है कि यह संकलित भी नहीं हो सकती है। और वह 'गिट बिसेक्ट' के लिए परेशानी का कारण बनता है। – VonC

संबंधित मुद्दे