आप एक Git सुरक्षा सुविधा देख रहे हैं। Git आपकी शाखा के साथ दूरस्थ शाखा को अपडेट करने से इंकार कर देता है, क्योंकि आपकी शाखा की हेड कमेटी उस शाखा के वर्तमान हेड कमेट का प्रत्यक्ष वंशज नहीं है जिसे आप धक्का दे रहे हैं।
अगर ऐसा नहीं होता, तो एक ही समय में एक ही भंडार में धकेलने वाले दो लोग यह नहीं जानते होंगे कि एक ही समय में एक नई प्रतिबद्धता आ रही थी और जिसने भी अंतिम धक्का दिया, वह पिछले ढकेलने वाले के काम को खो देगा या तो बिना उन्हें इस बात का एहसास है।
यदि आप जानते हैं कि आप धक्का देने वाले एकमात्र व्यक्ति हैं और आप एक संशोधित कमिट को धक्का देना चाहते हैं या एक कमिट को धक्का देना चाहते हैं जो शाखा को वापस लाती है, तो आप -f
स्विच का उपयोग करके रिमोट शाखा को अपडेट करने के लिए 'बल' दे सकते हैं ।
git push -f origin master
यहां तक कि यह काम नहीं कर सकता क्योंकि जीआईटी दूरस्थ रिपॉजिटरी को कॉन्फ़िगरेशन चर का उपयोग करके दूर के अंत में गैर-फास्टवर्ड पुश से इनकार करने की अनुमति देता है receive.denynonfastforwards
। यदि यह मामला है तो अस्वीकृति कारण इस तरह दिखेगा ('रिमोट अस्वीकृत' भाग पर ध्यान दें):
! [remote rejected] master -> master (non-fast forward)
इसके आस-पास जाने के लिए, आपको या तो दूरस्थ रिपॉजिटरी के कॉन्फ़िगरेशन को बदलने की जरूरत है या एक गंदे हैक के रूप में आप शाखा को हटा सकते हैं और इसे फिर से बना सकते हैं:
git push origin :master
git push origin master
सामान्य रूप से git push
प्रारूप का उपयोग करने के लिए अंतिम पैरामीटर <local_ref>:<remote_ref>
, जहां local_ref
स्थानीय रिपॉजिटरी पर शाखा remote_ref
का नाम है और रिमोट रिपॉजिटरी पर शाखा का नाम है। यह कमांड जोड़ी दो शॉर्टहैंड का उपयोग करती है। :master
null local_ref है जिसका अर्थ है कि एक अशक्त शाखा को दूर की ओर धकेलें master
, अर्थात दूरस्थ शाखा को हटा दें। एक शाखा नाम जिसका कोई :
अर्थ नहीं है, स्थानीय शाखा को दिए गए नाम के साथ दूरस्थ शाखा को उसी नाम के साथ धकेलें। master
इस स्थिति के लिए कम है master:master
।