यदि Mac पर काम करते समय कोई Git rebase रुक जाता है, तो पहले git status के साथ जांचें कि क्या यह अभी भी प्रगति पर है। फिर से शुरू करने के लिए, प्रत्येक टकराव को हल करें, केवल उन्हीं फ़ाइलों को स्टेज करें जिन्हें आपने हल किया है, और git rebase --continue चलाएं। Rebase से पहले की शाखा स्थिति पर वापस लौटने के लिए, git rebase --abort चलाएं। ये विकल्प अलग-अलग काम करते हैं, इसलिए कोई कमांड दर्ज करने से पहले पुष्टि करें कि आप क्या परिणाम चाहते हैं।

1. रिपॉजिटरी को फिर से खोलें और उसकी स्थिति जांचें

Spotlight से या Finder के Applications > Utilities फ़ोल्डर से Terminal खोलें। Terminal में, रिपॉजिटरी की शीर्ष-स्तरीय (top-level) डायरेक्टरी पर जाएं, फिर उसकी स्थिति का निरीक्षण करें:

cd '/path/to/your/repository'
git status

उदाहरण पाथ को अपनी रिपॉजिटरी के पाथ से बदलें। यदि आप ऐसा पाथ टाइप करते हैं जिसमें रिक्त स्थान (spaces) या शेल मेटाकैरेक्टर हैं, तो उसे दिखाए गए अनुसार सिंगल कोट्स में रखें। Terminal का डिफ़ॉल्ट शेल zsh है, हालांकि कोई व्यवस्थापक या आपकी सेटिंग्स कोई अन्य शेल निर्दिष्ट कर सकती हैं। Apple की Terminal गाइड

यदि Git रिपोर्ट करता है कि rebase प्रगति पर है, तो टकराव वाले पाथ और वर्तमान चरण के लिए स्थिति आउटपुट पढ़ें। यदि यह सक्रिय rebase की रिपोर्ट नहीं करता है, तो बिना सोचे-समझे केवल अनुमान के आधार पर --continue या --abort न चलाएं; क्या हुआ यह तय करने से पहले स्थिति और हाल के इतिहास की समीक्षा करें। git status अनट्रैक्ड फ़ाइलों सहित वर्किंग-ट्री और इंडेक्स परिवर्तनों की रिपोर्ट करता है, इसलिए यह मान लेने के बजाय कि प्रत्येक फ़ाइल rebase से संबंधित है, इसका पूरा आउटपुट पढ़ें। Git का git status दस्तावेज़ीकरण

2. टकरावों को सावधानीपूर्वक हल करके फिर से शुरू करें

प्रत्येक टकराव वाली फ़ाइल को अपने एडिटर में खोलें। Git टेक्स्ट टकरावों को <<<<<<<, =======, और >>>>>>> जैसे अनुभागों के साथ चिह्नित करता है। तय करें कि अंतिम सामग्री क्या होनी चाहिए, फ़ाइल को संपादित करें, और टकराव मार्करों को हटा दें। किसी एक पक्ष को स्वचालित रूप से तब तक स्वीकार न करें जब तक कि वह इच्छित कोड या टेक्स्ट से मेल न खाता हो। Git की rebase गाइड टकराव-समाधान क्रम का वर्णन करती है: फ़ाइलों को संपादित करें, समाधानों को स्टेज करें, फिर जारी रखें। Git का git rebase दस्तावेज़ीकरण

स्टेज करने से पहले संबंधित परिवर्तनों का निरीक्षण करने के लिए Terminal पर वापस लौटें। उदाहरण के लिए:

git diff

git status द्वारा दिखाए गए वास्तविक पाथ का उपयोग करके प्रत्येक हल किए गए पाथ को नाम से स्टेज करें:

git add 'path/to/resolved-file'
git status
git rebase --continue

कोट्स रिक्त स्थान या शेल मेटाकैरेक्टर वाले पाथ की सुरक्षा करते हैं; यदि पाथ को कोट्स की आवश्यकता नहीं है तो उन्हें छोड़ दें। git add नामित फ़ाइल की वर्तमान सामग्री को स्टेज करता है, इसलिए यदि इसमें असंबंधित संपादन हैं तो पहले diff का निरीक्षण करें। यह पुष्टि करने के लिए स्थिति फिर से जांचें कि सही समाधान स्टेज किया गया है। Git किसी अन्य टकराव पर फिर से रुक सकता है या आपसे कमिट संदेश संपादित करने के लिए कह सकता है; प्रॉम्प्ट का पालन करें, फिर समाधान, स्टेज और जारी रखने के चरणों को दोहराएं। Git का git add दस्तावेज़ीकरण

git rebase --skip का उपयोग केवल तब करें जब आप जानबूझकर उस कमिट को छोड़ना चाहते हैं जिसे वर्तमान में रीप्ले किया जा रहा है। यह उस पैच से आगे बढ़ जाता है; यह उसी कमिट को फिर से शुरू करने का कोई दूसरा तरीका नहीं है। यदि आप अनिश्चित हैं कि छोड़ने से आवश्यक कार्य छूट जाएगा या नहीं, तो इसका उपयोग न करें। Git के git rebase विकल्प

3. जब आप rebase को पूर्ववत (undo) करना चाहें तो रद्द करें

यदि आप ऑपरेशन को रोकना चाहते हैं और मूल शाखा स्थिति पर वापस लौटना चाहते हैं, तो चलाएं:

git rebase --abort
git status

Git --abort को मूल शाखा स्थिति पर (या दिए गए शाखा पर, यदि rebase शुरू होने पर कोई निर्दिष्ट की गई थी) HEAD को रीसेट करने के रूप में प्रलेखित करता है। फिर स्थिति की जांच करें और सत्यापित करें कि परिणाम वही है जिसकी आपने अपेक्षा की थी। Git का git rebase दस्तावेज़ीकरण

--abort को --quit के साथ भ्रमित करने से बचें। git rebase --quit rebase ऑपरेशन को समाप्त करता है जबकि HEAD, इंडेक्स और वर्किंग ट्री को उस समय की स्थिति में ही छोड़ देता है। इसे केवल तभी चुनें जब आप विशेष रूप से rebase को रोकना चाहते हैं लेकिन वर्तमान प्रगतिशील स्थिति को बनाए रखना चाहते हैं; यह rebase से पहले की शाखा स्थिति को पुनर्स्थापित नहीं करता है। यदि rebase ने --autostash का उपयोग किया था, तो Git छोड़ते समय उस अस्थायी स्टैश को सहेजता है। Git के git rebase विकल्प

4. यदि Terminal बंद हो गया था या स्थिति अस्पष्ट है

Terminal विंडो बंद करने से अपने आप यह पता नहीं चलता कि Git ने rebase पूरा किया या नहीं। रिपॉजिटरी को फिर से खोलें और git status चलाएं; रिपोर्ट की गई स्थिति से जारी रखें। मौजूदा rebase सक्रिय होने के दौरान मूल git rebase कमांड को दोबारा न चलाएं।

यदि किसी रुकावट ने रिपॉजिटरी को ऐसी स्थिति में छोड़ दिया है जहां Git अब सक्रिय rebase को नहीं पहचानता है, तो .git स्टेट फ़ाइलों को मैन्युअल रूप से हटाने या अनुमान के आधार पर reset --hard का उपयोग करने से बचें। Git का दस्तावेज़ीकरण नोट करता है कि apply बैकएंड के साथ असमय रुकावट से ऐसा rebase छूट सकता है जिसे बाद में --abort साफ़ तौर पर रद्द नहीं कर सकता। पहले किसी भी मूल्यवान अनकमिटेड कार्य को सुरक्षित रखें, फिर हाल ही में शाखा में हुए बदलावों को समझने के लिए git status और git reflog का निरीक्षण करें। Reflog शाखा युक्तियों (branch tips) के हाल के स्थानीय अपडेट को रिकॉर्ड करता है; यह पिछले कमिट की पहचान करने में मदद कर सकता है, लेकिन किसी को पुनर्स्थापित करना सोच-समझकर किया जाना चाहिए। Git के rebase रुकावट संबंधी नोट्स, Git का git reflog दस्तावेज़ीकरण

साधारण रोके गए टकराव के मामले में, सुरक्षित निर्णय सीधा है: --continue से पहले इच्छित परिवर्तनों को हल करें और स्टेज करें, या जब आप rebase को छोड़ना चाहते हैं और इसके शुरुआती बिंदु पर वापस लौटना चाहते हैं तो --abort का उपयोग करें। किसी भी कार्रवाई के बाद git status की दोबारा जांच करें ताकि आपको पता चल सके कि आपके Mac की वर्किंग कॉपी वास्तव में किस स्थिति में है।

स्रोत