2010-07-12 16 views
9

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

कोई विचार? धन्यवाद

+2

स्क्वैशिंग के लिए http://stackoverflow.com/questions/2302736/trimming-git-checkins-squashing-git-history/2302947#2302947 देखें – VonC

+0

आप सहायता के लिए प्री-प्रतिबद्ध हुक जोड़ने पर भी विचार करना चाहेंगे अपनी कोडिंग शैली की समीक्षा करें। इसके साथ, यदि आप कोड को करने का प्रयास करते हैं तो आपके द्वारा सेट किए गए कुछ मानकों का उल्लंघन करने पर आप गिट शिकायत कर सकते हैं। आप पहली जगह खराब कामों को रोकने में मदद कर सकते हैं! उदाहरण पूर्व-प्रतिबद्ध हुक ('.git/hooks/pre-commit.sample') लाइनों के पीछे पीछे की जगहों जैसी चीजों को देखता है। आप एक स्क्रिप्ट में जीएनयू इंडेंट को लपेट सकते हैं, उदाहरण के लिए, एक विशिष्ट कोडिंग शैली को लागू करने के लिए, और इसे अपने प्री-प्रतिबद्ध हुक में डाल दें। –

उत्तर

20

अद्यतन: के रूप में अन्य लोगों ने बताया, किसी भी रिबेसिंग ऐसा नहीं करते हैं, या किसी भी प्रकार यदि आप किसी दूरस्थ मूल करने के लिए धक्का दिया और अन्य डेवलपर्स के साथ इस कोड साझा किया है के इतिहास को फिर से लिखने। संक्षिप्त उत्तर: यह खतरनाक और जोखिम भरा है!

मैं इसके लिए rebase आदेश बाहर की जाँच की सलाह देते हैं।

git rebase -i HEAD~5 

आपका संपादक के साथ पॉप अप होगा: यह आप के लिए

वास्तव में क्या कह रहे हैं तो क्या इस छोटे प्रतिबद्ध लेते हैं और उन्हें बड़ों में गठबंधन

इसका इस्तेमाल करने के लिए है करता है आखिरी 5 कुछ दस्तावेजों के साथ वर्तमान शाखा के प्रमुख से काम करता है। आपके मामले में आप squash का उपयोग करना चाहेंगे। साइट मैं जुड़ा हुआ यह वास्तव में अच्छी तरह से बताते हैं, वे इस उदाहरण है:

pick 01d1124 Adding license 
squash 6340aaa Moving license into its own file 
squash ebfd367 Jekyll has become self-aware. 
squash 30e0ccb Changed the tagline in the binary, too. 

यह पिछले 3 प्रतिबद्ध पैकेज और उन सभी को एक आप pick के रूप में चिह्नित किया है के तहत रखा जाएगा। फिर आप प्रतिबद्ध संदेश को संशोधित कर सकते हैं और आगे।

मज़ा

+0

क्यों downvote: यहाँ वर्णनात्मक लिंक पैदा करने के लिए एक उपयोगी बुकमार्कलेट है? – meagar

+0

+1। स्क्वैशिंग जाने का रास्ता है। यहां अधिक जानकारी: http: //www.gitready।कॉम/एडवांस्ड/200 9/02/10/स्क्वैशिंग-कमिट्स-साथ-rebase.html – Jeet

+2

बस जो कुछ भी आप करते हैं, * अगर आप पहले से ही अपने परिवर्तनों को धक्का दे चुके हैं तो ऐसा न करें: एस – andrewdotnich

16

परिवर्तन करने के लिए एक ही रास्ता एक प्रतिबद्ध के साथ है। हालांकि, अगर आप में संशोधन पिछले प्रतिबद्ध यदि चाहें तो नए परिवर्तन शामिल करने के लिए कर सकता है। यह तब तक का सबसे अच्छा समाधान हो सकता है जब आपने पिछले रिमोट रिपोजिटरी को पिछली प्रतिबद्धता को धक्का नहीं दिया है।

गिट में in the Git user's manual और in a blog post में संशोधन करने के बारे में अच्छी जानकारी है।

+0

लिंक के लिए धन्यवाद। हालांकि, मुझे [क्लिकहेयर] लिंकिंग शैली पसंद नहीं है। [Markdown लिंक को कॉपी करें या इसे संपादित] (http://pastebin.com/qEafAErg) (pastebin लिंक) – takeshin

3

इस करने से पहले हर संशोधित फ़ाइल पर xdiff या WinMerge तरह एक दृश्य उपकरण चलाने के लिए Git difftool उपयोग करने के लिए है पता करने के लिए सबसे अच्छा तरीका है। यह मामूली परिवर्तनों को पूर्ववत करना आसान बनाता है और आपके द्वारा किए गए महत्वपूर्ण परिवर्तनों को पकड़ लेगा और तैयार नहीं हैं। मैं इस तरह की एक उचित संख्या में बग पकड़ता हूं। उदाहरण के लिए, जब आप कोड देख रहे हों तो एक अनुपलब्ध या अतिरिक्त HTML टैग स्पॉट करना कठिन हो सकता है, लेकिन जब आप एक diff करते हैं तो स्पॉट करना आसान होता है।

+1

क्या कोई कारण है कि आप ' टी 'गिट diff' का उपयोग करें? यह इसके प्राथमिक उद्देश्यों में से एक है ... – Cascabel

+0

@ जेफ्रोमी, गिट diff मुझे कोड संपादित करने और फ़ाइलों के हिस्सों को वापस करने की अनुमति नहीं देता है। साथ ही, मुझे पूर्ण फ़ाइल सामग्री के पक्ष में एक पक्ष होने के लिए बहुत अधिक मदद मिलती है, मुझे गलतियों को पकड़ने में मदद मिलती है, मुझे लाइन diff द्वारा लाइन से याद आती है (अगर इस के लिए कोई विकल्प है तो मुझे आश्चर्य नहीं होगा, लेकिन यह संपादन की कमी के लिए तैयार नहीं होगा) – mikerobi

+0

क्या आपने गिट difftool की कोशिश की है? – bstpierre

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