2010-08-12 15 views
5

के साथ संघर्ष, तो कल मैंने अपनी स्थानीय विषय शाखा में अपस्ट्रीम शाखा को रीबेज करने का प्रयास करते समय कुछ अजीब संघर्षों के बारे में question पोस्ट किया था।`गीट रीबेज '

अंत में मैंने git rebase --merge upstream का उपयोग किया और पिछली रीबेस के बाद से मैंने उन फ़ाइलों में बहुत से संघर्ष हल किए जिन्हें मैंने स्पर्श नहीं किया था।

मेरे इस तरह के एक मामले में रिबेस की समझ यह है कि यह उस विषय शाखा से मेरी प्रतिबद्ध detaches है नदी के ऊपर शाखा से प्रतिबद्ध लागू होता है, और उसके बाद (पैच के रूप में) उन के शीर्ष पर लागू होता है मेरी करता है। तो, यह तेजी से आगे के ऑपरेशन होने के समाप्त होता है। जो मुझे समझ में नहीं आता है ... मैं अपस्ट्रीम से आने वाले लोगों के साथ संघर्ष क्यों विलय करूँगा। क्या वे पैच के रूप में भी लागू होते हैं? मैंने सोचा कि बस ... "वेल्डिंग" का कार्य कुछ पिछली प्रतिबद्धता के शीर्ष पर आता है जो एक ही शाखा से आया था?

मैं यह पूछ रहा हूं क्योंकि मेरे पास बहुत से फ़ाइलों में टकरावों के संघर्ष थे जिन्हें मैंने स्पर्श नहीं किया था। ओह, और मैं इस अपस्ट्रीम शाखा के साथ दैनिक rebases करता हूँ।

अद्यतन

मैं सिर्फ देखा है प्रतिबद्ध नदी के ऊपर से मेरे विषय शाखा के लिए लाया में से कुछ उनके SHA-1 आईडी बदला है। क्या किसी को पता है कि गिट इस से क्या कर सकता है? क्या यह --merge स्विच हो सकता है?

मेरे Git संस्करण 1.5.6.5

+0

क्या आपके पास http://stackoverflow.com/questions/1042207/git-svn-rebase-fails जैसे किसी प्रकार का स्वचालित रूपांतरण है? – VonC

+0

@VonC 'core.autocrlf' खाली है, जो मुझे लगता है कि" इनपुट "का डिफ़ॉल्ट मान है। क्या यह इस वजह से हो सकता है? मुझे यकीन नहीं है कि मैं अब समस्या को पुन: उत्पन्न कैसे कर सकता हूं, यह देखने के लिए कि क्या इसे गलत पर सेट करना कोई फर्क पड़ता है। –

+0

ţ: सुनिश्चित करें कि यह सुनिश्चित करने के लिए इसे गलत पर सेट करना सुनिश्चित करें। – VonC

उत्तर

2

रिबेस फिर से लिखते इतिहास है। अगर आप रिमोट पर पहले से ही धकेलने वाले कामों को दोबारा शुरू कर देते हैं, तो आप चोट की दुनिया में प्रवेश कर रहे हैं। यदि आप इस तरह रीबेज करना जारी रखते हैं तो इससे भी बदतर। रीबेस के पास बार है, लेकिन यह विशेषता उपकरण आईएमओ है, आकस्मिक टूल, मर्ज की तरह नहीं है।

और उसके बाद (पैच के रूप में) उन की चोटी पर मेरी प्रतिबद्ध लागू होता है।

हाँ, नए रूप में करता है

इसलिए, यह एक तेजी से आगे आपरेशन

नहीं, एक तेजी से आगे बस इस बात का सूचक HEAD बढ़ रहा है जा रहा समाप्त होता है डाली। आप रिमोट से नई ऑब्जेक्ट्स पेश कर रहे हैं और फिर उसके ऊपर पैच लगा रहे हैं।

यदि आपका स्थानीय और दूरदराज के A1 पर सिंक में पिछले थे, और कहते हैं कि तुम जोड़ा (स्थानीय) A2 और A3 करता, और पाया कि दूरस्थ B1 और B2 जोड़ा था, रिबेसिंग A2 और A3 छिपाया जाएगा, नीचे B1 खींच सकते हैं और B2 (तेजी से आगे हैं क्योंकि वे एक आम वंशज A1 का हिस्सा होना चाहिए), और फिर नए प्रतिबद्ध (इसलिए नई SHA-1) A2' और A3' रूप A2 और A3के लिए पैच लागू होते हैं।

तो अब आपके स्थानीय इतिहास है: A1 - B1 - B2 - A2' - A3' जो तेजी से आगे नहीं है।

+1

मुझे रिबेस के खतरे पता हैं, और मैं इस तरह रीबेस का उपयोग नहीं कर रहा हूं। कुछ कारणों से, जब मैंने इस सवाल को पोस्ट किया तो मुझे उन फ़ाइलों पर अजीब संघर्ष था जिन्हें मैंने छुआ नहीं है। रीबेस को मर्ज करने से कम संघर्ष पैदा करने के लिए जाना जाता है, लेकिन यह मेरे लिए ऐसा नहीं करता था। इसलिए मेरा सवाल है। मुझे कारण नहीं मिला है, न ही इसे पुन: उत्पन्न करें। –

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