इतिहास बदल रहा है
यदि यह सबसे हाल की प्रतिबद्धता है, तो आप बस यह कर सकते हैं:
git commit --amend
यह अंतिम प्रतिबद्ध संदेश के साथ संपादक को लाता है और आपको संदेश को संपादित करने देता है। (आप -m
पुराने संदेश को मिटा देना चाहते हैं और नया प्रयोग कर सकते हैं।)
धक्का
और फिर जब आप धक्का देते हैं, तो यह करें:
git push --force-with-lease <repository> <branch>
या आप "+" का उपयोग कर सकते हैं:
git push <repository> +<branch>
या आप उपयोग कर सकते हैं --force
:
git push --force <repository> <branch>
इन आदेशों का उपयोग करते समय सावधान रहें।
यदि किसी अन्य व्यक्ति ने उसी शाखा में परिवर्तन किए हैं, तो आप शायद उन परिवर्तनों को नष्ट करने से बचना चाहते हैं। --force-with-lease
अगर कोई नदी के ऊपर परिवर्तन कर रहे हैं, क्योंकि यह रद्द कर देगा (विकल्प, सबसे सुरक्षित है
यदि आप शाखा को स्पष्ट रूप से निर्दिष्ट नहीं करते हैं, तो Git डिफ़ॉल्ट पुश सेटिंग्स का उपयोग करेगा। यदि आपकी डिफ़ॉल्ट पुश सेटिंग "मिलान" है, तो आप एक ही समय में कई शाखाओं पर परिवर्तनों को नष्ट कर सकते हैं।
बाद में खींचना / लाना
जो कोई पहले से ही खींच चुका है, उसे अब एक त्रुटि संदेश मिलेगा, और उन्हें अपडेट करने की आवश्यकता होगी (यह मानते हुए कि वे स्वयं कोई बदलाव नहीं कर रहे हैं)
git fetch origin
git reset --hard origin/master # Loses local commits
उपयोग करते समय सावधान रहें reset --hard
। यदि आपके पास शाखा में परिवर्तन हैं, तो वे परिवर्तन नष्ट हो जाएंगे।
इतिहास को संशोधित करने के बारे में एक नोट
नष्ट किया गया डेटा वास्तव में सिर्फ पुराना प्रतिबद्ध संदेश है, लेकिन --force
यह नहीं जानता कि, और खुशी से अन्य डेटा भी हटा देगा। इसलिए सोचें --force
कि "मैं डेटा को नष्ट करना चाहता हूं, और मुझे पता है कि डेटा को नष्ट किया जा रहा है।" लेकिन जब नष्ट किए गए डेटा को कमिट किया जाता है, तो आप अक्सर पुराने कमिट्स को रिफ्लॉग से रिकवर कर सकते हैं- डेटा वास्तव में नष्ट होने के बजाय अनाथ हो जाता है (हालाँकि अनाथ किए गए समय-समय पर डिलीट हो जाते हैं)।
अगर आपको नहीं लगता कि आप डेटा नष्ट कर रहे हैं, तो इससे दूर रहें --force
... बुरी चीजें हो सकती हैं ।
यही कारण है कि --force-with-lease
कुछ हद तक सुरक्षित है।