वास्तव में git rebase --skip क्या करता है?


107

मैंने सिर्फ एक किया git pull --rebase origin masterऔर एक संघर्ष हुआ।

सबसे पहले, यह संघर्ष एक फाइल में था जिसे मैंने नहीं छुआ था, और लगभग 10 कमिट्स वापस आ गया था। क्यों होता है ऐसा?

मैंने फिर आकस्मिक रूप से टाइप किया git rebase --skip, और यह 'उस पैच को छोड़ दिया'।

चिंताजनक है कि मैंने कमिट किया था, मैंने मास्टर ब्रांच के एक नए संस्करण की जाँच की और उस ब्रांच के बीच एक अंतर किया, जिस पर मैंने रिबेस किया था, और नई मास्टर ब्रांच। केवल वही परिवर्तन जो अंतर में दिखाई देते हैं, वे नवीनतम प्रतिबद्धता हैं, और लॉग को देखते हुए, पैच जिसे 'छोड़ दिया गया था', प्रतिबद्ध इतिहास में दिखाई देता है।

क्या कोई समझा सकता है कि यहां क्या चल रहा है?


11
आप गलती से कैसे टाइप करते हैं git rebase --skip। गलत शायद? :)
मनोजोअर्स

3
हा! टाइप टू -बोर्ट का मतलब है, लेकिन किसी अज्ञात कारण से --स्काइप के रूप में सामने आया। वास्तव में नहीं सोच रहा था। :)
mrwooster

9
शेल इतिहास इस पर अच्छा है (आपको कुछ ऐसा करना है जिसे आप नहीं करना चाहते हैं)।
फ्लोरियन क्लेन

जवाबों:


60

यह यह क्या कहते हैं करता है, यह छोड़ देता है तो एक प्रतिबद्ध। यदि आप rebase --abortउसी रिबास के दौरान बाद के संघर्ष में भागते हैं , तो छोड़ दिया गया कमिट भी निश्चित रूप से वापस कर दिया जाएगा।

यदि आपका परिवर्तन पहले से ही ऊपर की ओर मौजूद है, तो Git आपकी प्रतिबद्धता को लागू करने में सक्षम नहीं होगा (लेकिन आमतौर पर इसे स्वचालित रूप से छोड़ देना चाहिए, यदि पैच बिल्कुल समान है)। आपकी स्वयं की प्रतिबद्धताओं को छोड़ दिया जाएगा, लेकिन परिवर्तन अभी भी वर्तमान HEAD में मौजूद रहेगा, क्योंकि यह पहले से ही अपस्ट्रीम में लागू था।

आपको वास्तव में यह सुनिश्चित करना चाहिए कि आपने अपना एक महत्वपूर्ण परिवर्तन नहीं हटाया है?) (छूट से पहले राज्य में वापस जाने के लिए रिफ्लैग का उपयोग करें)


4
तो क्यों लॉग में अभी भी कमिटमेंट दिखाई दे रहा है? और क्यों गायब हो गया प्रतिबद्ध अब अलग दिखाई देता है?
मर्वोस्टर

3
हां, संघर्ष पहले ही हल हो गया था ... किसी कारण से गिट रिबेज पुराने मर्ज संघर्ष को लाता है ... एक और बात जो मुझे भ्रमित करती है? ... इसका मतलब यह है कि यह संघर्ष को छोड़ देता है, लेकिन उस पैच को लागू करता है जिसने हल किया? संघर्ष?
19

3
आपने अपनी स्वयं की प्रतिबद्धताओं को छोड़ दिया, जिसमें एक बदलाव के रूप में एक ही बदलाव था। आपने अपनी प्रतिबद्धता को छोड़ दिया, लेकिन परिवर्तन अभी भी किया गया था (क्योंकि यह पहले से ही ऊपर की ओर मौजूद था)
knittl

1
@ मित्तल नहीं, मुझे नहीं लगता कि --skipजाने का रास्ता है। इस कमिट में किए गए सभी बदलावों को छोड़ दें, स्किप पूरी तरह से कमिट को छोड़ देगा।
नाइटल

3
@ मित्तल: नकल के git rebaseरूप में एक शाखा से दूसरी शाखा पर जाने के बारे में सोचें । इसलिए जब आप एक प्रतिबद्ध छोड़ते हैं, तो प्रतिबद्ध की मूल सामग्री छोड़ दी जाती है और पैच लागू नहीं किया जाता है (इसलिए किसी भी फ़ाइल में किए गए सभी परिवर्तन इसे आपके लक्ष्य शाखा में नहीं बनाएंगे)। सबसे आसान तरीका दो शाखाओं के साथ एक साधारण गिट रिपॉजिटरी स्थापित करना है, उनमें से प्रत्येक पर कई कमिट होते हैं और फिर एक git rebase --interactivepickskip
रिबेट को रद्द
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.