"Git rebase --continue" भूल गए और "git कमिट" किया। कैसे ठीक करना है?


112

मैं जीआईटी में कोड को रिबास कर रहा था, मुझे कुछ मर्ज का सामना करना पड़ा। मैंने संघर्षों को हल किया और किया:

git add

इस बिंदु पर मैं करना भूल गया:

git rebase --continue

मैंने कोडिंग जारी रखी और किया:

git commit

परिवर्तनों के लिए। अब मैं "no branch"कर रहा हूँ और ऐसा नहीं कर सकता:

git rebase --continue 

मैं यह कैसे तय करुं?


# वर्तमान में किसी भी शाखा पर नहीं। कुछ नहीं करने के लिए (स्वच्छ निर्देशिका काम कर)
अभिलाष

जवाबों:


5

संपादित करें : नीचे दिए गए उत्तर को देखें और देखें कि क्या यह आपके लिए एक आसान समाधान है। https://stackoverflow.com/a/12163247/493106


मुझे इसे आज़माना होगा, लेकिन मुझे लगता है कि मैं यही करूँगा:

  1. अपनी नवीनतम प्रतिबद्ध को टैग करें (या बस इसके SHA1 को कहीं लिखें ताकि आप इसे न खोएं): git tag temp
  2. git rebase --abort
  3. फिर से करें। आपको फिर से मर्ज को हल करना होगा। :(
  4. git rebase --continue
  5. git cherry-pick temp

इसके साथ समस्या यह है कि आपके tempकमिट में संभवतः मर्ज का रिज़ॉल्यूशन और नया कोड दोनों शामिल हैं। तो यह मुश्किल हो सकता है लेकिन मैं यह कोशिश करूंगा और देखूंगा कि यह काम करता है या नहीं।


या तो आप @MatrixFrog की तरह टैग कर सकते हैं या आप इसे पैच के रूप में भी सहेज सकते हैं। फिर रिबेट गर्भपात करते हैं। यह सुनिश्चित करने के लिए स्थिति की जांच करें कि रेपो एक ऐसी स्थिति में है जिसे आपको पता है कि कोई समस्या नहीं थी और फिर लाने और फिर से शुरू करें।
यासोउर

17
यह मत करो। बहुत सरल / साफ-सुथरे तरीके से किरीकज़ा का उत्तर नीचे देखें। चेरी-पिक के साथ गड़बड़ न करें और दूसरी बार विरोध करने पर विरोध करें।
tandrewnichols

4
@ अभिलाष कृपया करिकजा का उत्तर स्वीकार करें। मैंने (जैसा कि trewrewnichols) ने किया था और एक बहुत आसान तरीका था (और इंटरनेट इस बात से सहमत है कि उत्तर में 4x ऊपर है)।
डेविड डोरिया

अब यह 10x अपवॉट्स है ... इसके अलावा, अपने रेज़लूशन रिज़ॉल्यूशन (उपयोगी, जब तक आप कभी-कभी खराब रिज़ॉल्यूशन नहीं बनाते हैं, जिसे आप इसे याद नहीं रखना चाहते हैं) को याद रखने के लिए git rerere का उपयोग करें।
अजाक्स

216

बस करो git reset --soft HEAD^। यह HEAD पॉइंटर को उसके अभिभावक के पास ले जाता है लेकिन कार्य ट्री रखता है और इंडेक्स में मर्ज परिवर्तन जोड़ता है। इसलिए आप git rebase --continueपहले की तरह रिबासिंग जारी रख सकते हैं ।


1
यह पूरी तरह से काम करता था, और पहली बार मुझे --soft के लिए एक उपयोग मिला था। यह जानकर अच्छा लगा कि यह कैसे काम करता है, धन्यवाद!
mmocny

1
मुझे आशा है कि लोग इस जवाब पर सभी अप वोट देखेंगे और यहाँ जो भी सुझाया गया है उसका पालन करेंगे!
रघु

1
यह वही है जो मैंने सोचा था (लेकिन दुर्घटना से मुश्किल से गुजर सकता है)। यकीन नहीं था कि अगर एक विद्रोह के दौरान HEAD को अपडेट किया जा रहा था। पुष्टि करने के लिए शुक्रिया! इसलिए खुशी है कि ऊपर दिए गए सिरदर्द के साथ खिलवाड़ करने से पहले मैंने थोड़ा और स्क्रॉल किया।
DeezCashews

मैंने नीचे दिए गए लिंक को डालने के लिए स्वीकार किए गए उत्तर को यहाँ संपादित किया- ऊपर दिए गए निर्देशों का पालन करने के बाद तक मैंने यह उत्तर नहीं देखा।
xaxxon

0

मुझे वही समस्या मिली, और इसे और बदतर बनाने के लिए, मैं तीन कमिट को रिबास कर रहा था, और दूसरी कमिट पर संघर्ष को हल करने के बाद, मैंने "रिबास - कॉन्टिन्यू" के बजाय "प्रतिबद्ध" किया।

एक परिणाम के रूप में मैं इस git reflog था

जब मैंने kikikaza का समाधान लागू किया, तो मैंने तीसरी प्रतिबद्धता को वापस कर दिया, और दूसरा नहीं, जो समस्याग्रस्त था ..

जैसा कि आप देख सकते हैं, रीबेज़ को रीमोट्स / मूल / मास्टर शाखा से एक चेकआउट द्वारा शुरू किया जाता है और फिर रिफ्लेग में तीन पिछले ऑपरेशन (चेकआउट से पहले) के रूप में दिखाई देने वाले मेरे तीन कमिट लागू होते हैं।

फिर, यदि आप रिबेस से पहले एक साफ आधार से रिस्टार्ट करना चाहते हैं, तो आप रिबास ऑपरेशन के चेकआउट से ठीक पहले हैश को हार्ड रीसेट कर सकते हैं। मेरे मामले में (चित्र देखें):

git reset --hard 859ed3c

तब आप एक नई शुरुआत कर सकते हैं git rebase


0

मैंने जीआईटी विद्रोह, फिक्स्ड संघर्ष, गिट फाइल को संघर्ष के साथ जोड़ा, और (गलती से) प्रतिबद्ध था।

मैंने दिए गए git reset --soft HEAD^और git reset --hardसमाधानों की कोशिश की , लेकिन न तो मेरे लिए काम किया।

हालांकि, बस git rebase --abortकाम किया: यह मुझे एक साफ काम करने वाले पेड़ के साथ रिबेस की शुरुआत से पहले वापस ले गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.