यदि आप निश्चित हैं कि किसी ने आपके गिट रिपॉजिटरी में कोई बदलाव नहीं किया है और आप नवीनतम संस्करण पर काम कर रहे हैं, git pull
तो यह आपके दिल में समाधान के रूप में समझ में नहीं आता है ...
फिर शायद यही हुआ, आपने उपयोग किया git commit --amend
यह आपको पिछले बदलाव के साथ मंचित परिवर्तनों को पूरी तरह से नए स्नैपशॉट के रूप में करने के बजाय संयोजित करने देता है। इसका उपयोग इसके स्नैपशॉट को बदले बिना पिछले प्रतिबद्ध संदेश को संपादित करने के लिए भी किया जा सकता है।
एटलसियन ट्यूटोरियल: इतिहास का पुनर्लेखन
हालांकि, यह प्रदर्शन करने की अनुशंसा नहीं की जाती है git commit --amend
यदि आपने पहले से ही GitHub को प्रतिबद्ध किया है , तो इसका कारण यह है कि "संशोधन केवल सबसे हालिया प्रतिबद्ध को बदल नहीं देता है - यह इसे पूरी तरह से बदल देता है। Git के लिए, यह एक ब्रांड नई प्रतिबद्ध की तरह दिखेगा" जिसका अर्थ आपके GitHub के अन्य डेवलपर से है, इतिहास A-> B-> C की तरह दिखता है, लेकिन आप के लिए यह A-> B-> D की तरह दिखता है, यदि GitHub आपको बताए, तो push
बाकी सभी को मैन्युअल रूप से अपना इतिहास ठीक करना होगा
यही कारण है कि आपको त्रुटि संदेश मिलता है ! [rejected] master -> master (non-fast-forward)
, यदि आप जानते हैं कि किसी ने आपके नवीनतम परिवर्तन को नहीं खींचा है, तो आप कर सकते हैं git push --force
, यह आपके सार्वजनिक रेपो में परिवर्तन के इतिहास को बदल देगा । अन्यथा ... आप प्रदर्शन कर सकते हैं git pull
, लेकिन मेरा मानना है कि यह उसी तरह का परिणाम होगा जैसा कि आप के माध्यम से नहीं गए थे git commit --amend
, यह एक नई प्रतिबद्धता पैदा करेगा (यानी: गिट पुल के बाद गिट इतिहास: ए-> बी-> सी-> डी )
अधिक विवरण के लिए: अपनी नवीनतम प्रतिबद्धताओं को कैसे बदलें