2013-03-14 10 views
7

, मुझे पता है एक अच्छा तरीका कैसे उपयोग करते हुए 'Git --interactive rebase'Git rebase: अब तक कम्बाइन गैर बाद प्रतिबद्ध

निम्नलिखित स्थिति होने से प्रतिबद्ध गठबंधन और प्रतिबद्ध संदेश को बदलने के लिए है कि वहाँ:

सीएसी और सीबीडी नया करने के लिए commitA और commitC और commitB और commitD का मेल करता है:

$ git rebase --interactive HEAD^^^^ 
pick 5b7c140 commitA 
pick 40ffd7c commitB 
pick 5e7647d commitC 
pick 78bea2d commitD 

Rebase [...] 

वहाँ भी निम्न आवश्यकताओं को संभालने के लिए एक संभावना है?

उत्तर

12

यह संभव है - आप भी इंटरैक्टिव रिबेस साथ प्रतिबद्ध के क्रम को पुनर्व्यवस्थित कर सकते हैं:

pick 5b7c140 commitA 
squash 5e7647d commitC 
pick 40ffd7c commitB 
squash 78bea2d commitD 

या

pick 5b7c140 commitA 
fixup 5e7647d commitC 
pick 40ffd7c commitB 
fixup 78bea2d commitD 

दोनों के बीच अंतर यह है कि squash आप संपादित करने के लिए प्रतिबद्ध की अनुमति देता है नए कामों के लिए संदेश, जबकि fixup संयुक्त प्रतिबद्धता के लिए pick पहले संदेश को छोड़कर दूसरे प्रतिबद्ध संदेश को फेंक देता है। (यदि आपका संपादक जल्दी से लॉन्च करता है, तो squash चुनने की आदत रखने से आपको प्रतिबद्ध संदेश की समीक्षा करने का एक अच्छा मौका मिलता है, भले ही आपको लगता है कि आपको शायद fixup प्रतिबद्धता के संदेश के हिस्सों का उपयोग करने की आवश्यकता नहीं है।)

विवाद विवाद की संभावना है, यदि आपका commitB और commitC फ़ाइल का एक ही हिस्सा बदलता है। अक्सर इन्हें आसानी से सुलझाया जा सकता है।

+1

मेरे मामले में: इन प्रतिबद्धताओं के बारे में कोई विवादित फ़ाइलें नहीं। गिट बस महान है, सोचा कि मुझे प्रतिबद्ध आदेश रखना है। आपका बहुत बहुत धन्यवाद! :) –

+1

@ जॉन - 'गिट रिबेस -आई 'बहुत शक्तिशाली उपकरण है !!! – FooF

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