मैंने एक रिमोट नंगे "मुख्य" रेपो की स्थापना की है और इसे अपने कंप्यूटर पर क्लोन किया है। मैंने कुछ स्थानीय परिवर्तन किए, अपने स्थानीय रिपॉजिटरी को अपडेट किया, और परिवर्तनों को वापस मेरे रिमोट रेपो में धकेल दिया। उस बिंदु तक चीजें ठीक थीं।
अब, मुझे रिमोट रेपो में कुछ बदलना था। फिर मैंने अपने स्थानीय रेपो में कुछ बदला। मैंने महसूस किया कि रिमोट रेपो में बदलाव की जरूरत नहीं थी। इसलिए मैंने git pushअपने स्थानीय रेपो से लेकर अपने रिमोट रेपो तक की कोशिश की , लेकिन मुझे एक त्रुटि मिली:
आपको इतिहास को खोने से रोकने के लिए, गैर-तेज़-फ़ॉरवर्ड अपडेट को फिर से पुश करने से पहले दूरस्थ परिवर्तनों को मर्ज करने से अस्वीकार कर दिया गया था। विवरण के लिए 'नोट
git push --helpफॉर फास्ट-फॉरवर्ड' सेक्शन देखें।
मुझे लगा कि शायद ए
git push --force
मेरी स्थानीय प्रति को दूरस्थ एक में परिवर्तन को धकेलने और उसे समान बनाने के लिए बाध्य करेगा। यह अपडेट को बाध्य करता है , लेकिन जब मैं रिमोट रेपो पर वापस जाता हूं और एक कमिट करता हूं, तो मैं ध्यान देता हूं कि फाइलों में पुराने बदलाव हैं (पहले जो मुख्य रिमोट रेपो था)।
जैसा कि मैंने एक उत्तर में टिप्पणियों में उल्लेख किया है :
[I] ने जबरदस्ती करने की कोशिश की, लेकिन जब परिवर्तनों को बचाने के लिए मास्टर सर्वर पर वापस जा रहा था, तो मुझे पुराना मंचन मिला। इस प्रकार, जब मैं प्रतिबद्ध करता हूं तो रिपॉजिटरी समान नहीं होती हैं। और जब मैं फिर से git पुश का उपयोग करने की कोशिश करता हूं, तो मुझे वही त्रुटि मिलती है।
मैं इस समस्या को कैसे हल कर सकता हूं?
git push --forceवास्तव में पुश को मजबूर करने का एक और वैध तरीका है, और शाखाओं को और git push origin master --forceसाथ ही गिट के डिफ़ॉल्ट के साथ धक्का देगा push.default config settings, हालांकि जिन शाखाओं को विशेष रूप से धक्का दिया जाता है, वे 2.0 से पहले के 2.0 के पूर्व के संस्करणों के बीच भिन्न होते हैं।
git push --forceइन दिनों ठीक काम करता है,
git push --force-with-leaseऔर भी बेहतर काम करता है :), यह शाखा को अपडेट करने से इंकार कर देगा जब तक कि यह वह स्थिति नहीं है जो आप अपेक्षा करते हैं। (देखें developer.atlassian.com/blog/2015/04/force-with-lease )
git push -forceपाएंगे ।