आपको अपने स्थानीय संशोधन को दूरस्थ रेपो में उपयोग करने के लिए बाध्य करने में सक्षम होना चाहिए
git push -f <remote> <branch>
(जैसे git push -f origin master
)। छोड़ना <remote>
और <branch>
उन सभी स्थानीय शाखाओं को बल देना होगा जो निर्धारित की हैं --set-upstream
।
बस चेतावनी दी जाती है, अगर अन्य लोग इस भंडार को साझा कर रहे हैं तो उनका संशोधन इतिहास नए के साथ संघर्ष करेगा। और अगर परिवर्तन के बिंदु के बाद उनके पास कोई स्थानीय कमिट है, तो वे अमान्य हो जाएंगे।
अपडेट : सोचा कि मैं एक साइड-नोट जोड़ूंगा। यदि आप ऐसे परिवर्तन कर रहे हैं जो अन्य लोग समीक्षा करेंगे, तो उन परिवर्तनों के साथ एक शाखा बनाना असामान्य नहीं है और समय-समय पर उन्हें मुख्य विकास शाखा के साथ अप-टू-डेट रखने के लिए रिबेट करें। बस अन्य डेवलपर्स को पता है कि यह समय-समय पर होगा इसलिए उन्हें पता चल जाएगा कि क्या उम्मीद है।
अद्यतन 2 : दर्शकों की बढ़ती संख्या के कारण मैं कुछ अतिरिक्त जानकारी जोड़ना चाहूंगा कि जब आपका upstream
बल धक्का का अनुभव करे तो क्या करें ।
कहो कि मैंने आपके रेपो का क्लोन बना लिया है और इस तरह कुछ कमेंट्स जोड़े हैं:
डी ---- ई विषय
/
ए ---- बी ---- सी विकास
लेकिन बाद में development
शाखा को एक हिट के साथ किया जाता है rebase
, जिसके कारण मुझे एक त्रुटि प्राप्त होगी जैसे कि मैं चलाता हूं git pull
:
वस्तुओं को खोलना: 100% (3/3), किया।
<रेपो-लोकेशन> से
* शाखा विकास -> FETCH_HEAD
ऑटो-विलय <फ़ाइलें>
CONFLICT (सामग्री): <स्थानों> में मर्ज संघर्ष
स्वचालित मर्ज विफल; संघर्ष को ठीक करें और फिर परिणाम करें।
यहां मैं संघर्षों को ठीक कर सकता हूं और commit
, लेकिन यह मुझे एक बहुत ही कुरूप प्रतिबद्ध इतिहास के साथ छोड़ देगा:
सी ---- डी ---- ई ---- एफ विषय
/ /
ए ---- बी -------------- सी 'विकास
यह उपयोग करने के लिए मोहक लग सकता है git pull --force
लेकिन सावधान रहें क्योंकि यह आपको फंसे हुए कामों के साथ छोड़ देगा:
डी ---- ई विषय
ए ---- बी ---- सी 'विकास
तो शायद सबसे अच्छा विकल्प एक करना है git pull --rebase
। इसके लिए मुझे पहले की तरह किसी भी तरह के संघर्ष को हल करने की आवश्यकता होगी, लेकिन मैं उपयोग करने के बजाय प्रत्येक चरण के लिए git rebase --continue
। अंत में प्रतिबद्ध इतिहास बेहतर दिखाई देगा:
डी '--- ई' विषय
/
ए ---- बी ---- सी 'विकास
अद्यतन 3: आप --force-with-lease
विकल्प का उपयोग "सुरक्षित" बल पुश के रूप में भी कर सकते हैं , जैसा कि उनके उत्तर में कपकेक ने उल्लेख किया है :
एक "पट्टे" के साथ जोर देने वाला बल बल को विफल करने की अनुमति देता है अगर रिमोट पर नए कमिट हैं जो आपको उम्मीद नहीं थी (तकनीकी रूप से, यदि आपने उन्हें अभी तक अपनी रिमोट-ट्रैकिंग शाखा में नहीं लाया है), जो कि उपयोगी है आप गलती से किसी और के कमिट को अधिलेखित नहीं करना चाहते हैं जिसे आप अभी तक नहीं जानते हैं, और आप बस अपना विवरण लिखना चाहते हैं:
git push <remote> <branch> --force-with-lease
आप --force-with-lease
निम्नलिखित में से किसी को पढ़कर कैसे उपयोग करें, इसके बारे में अधिक जानकारी जान सकते हैं :
git push origin --force
आपके लिए काम नहीं किया ?