2012-03-23 16 views
54

को धक्का देने में विफल रहा मुझे पता है कि लोगों ने समान प्रश्न पूछे हैं, लेकिन मुझे विश्वास है कि उनकी समस्याओं के कारण अलग-अलग हैं। मैं हार्ड रीसेट क्योंकि मैं अपने कोड बहुत बुरागिट पुश खारिज कर दिया गया: त्रुटि: कुछ रेफरी

git reset --hard 41651df8fc9 

मैं काफी कुछ परिवर्तन किए हैं में गड़बड़ था किया था, मैं कुछ करता बनाया है और अब है कि मैं सर्वर में इन सभी प्रतिबद्ध पुश करने के लिए कोशिश कर रहा हूँ मैं निम्नलिखित त्रुटि मिलती है:

! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]' 

Git एक Git पुल करने के लिए सुझाव देता है और जो अन्य लोगों को अन्य उपयोगकर्ताओं के लिए क्या सुझाव दिया है है। हालांकि, मेरा मानना ​​है कि एक गिट पुल मेरे वर्तमान कोड को कोड के साथ विलय कर देगा जो मैं अब और नहीं चाहता (मुख्य संशोधन)। मैं कैसे धक्का कर सकता हूं और मेरे आगे संस्करण/संशोधन के बारे में भूल सकता हूं?

उत्तर

90

git push -f यदि आपके पास अनुमति है, लेकिन वह उस रेपो से खींचने वाले किसी और को पेंच कर देगा, इसलिए सावधान रहें।

अगर वह इनकार किया है, और आप सर्वर तक पहुँच है, के रूप में canzar नीचे कहते हैं, तो आप इस सर्वर पर

git config receive.denyNonFastForwards false 
+0

मुझे लगता है मैं अनुमति नहीं है 'दूरस्थ : त्रुटि: गैर-फास्ट-फ़ॉरवर्ड रेफ/हेड/मास्टर को अस्वीकार करना (आपको पहले खींचना चाहिए) 'मैं फिलहाल इस रेपो पर काम कर रहा हूं, इसलिए मैं किसी अन्य शाखा या किसी चीज़ के बारे में चिंतित नहीं हूं। कोई विचार? – Eric

+0

यदि आप एकमात्र व्यक्ति हैं जो इस रेपो के मालिक हैं, तो बस 'गिट पुश-एफ' का उपयोग करें, जो आपके वर्तमान रेपो को रिमोट वन का उपयोग करेगा। यदि मल्टी यूजर डेवलपमेंट हैं, तो फास्ट-फॉरवर्ड जरूरी है, अन्यथा, यह डिस्टैस्ट बहुत आसान होगा। – Tim

+1

यदि आप रिमोट पर लॉग इन कर सकते हैं, तो आप सीधे ग्रिड रिपो में जा सकते हैं और मैन्युअल रूप से 'गिट शाखा-एफ' के साथ शाखा को रिवाइंड कर सकते हैं, उदाहरण के लिए, 'गिट शाखा-एफ rewind_the_one_I_broke 8120307' उदाहरण के लिए। रीसेट-पॉइंट खोजने के लिए आप एक नंगे रेपो में 'गिट लॉग' चला सकते हैं। ध्यान दें कि इसका 'गिट पुश-एफ' जैसा ही प्रभाव है लेकिन हुक को छोड़ देता है। – torek

23

साथ आप केवल परियोजना पर काम कर व्यक्ति हैं, तो अनुमति दे सकते हैं, क्या आप क्या कर सकते हैं:

git checkout master 
git push origin +HEAD 

यह (और इतने 41651df और मूल/मास्टर के बीच प्रतिबद्ध हटाना) एक ही करने के लिए मूल/मास्टर की नोक सेट हो जाएगा मास्टर के रूप में प्रतिबद्ध

+0

क्या यह उस कोड से छुटकारा पा जाएगा जो मैं अब और नहीं चाहता हूं और अपना नया कोड रखूं? (क्षमा करें अगर यह एक गूंगा जवाब है) – Eric

+2

यह मास्टर/मास्टर के रूप में उसी प्रतिबद्धता के लिए मूल/मास्टर की नोक सेट करेगा (और इसलिए 41651 डीएफ और मूल/मास्टर के बीच की गतिविधियों को हटाएं) – ouah

+0

मूल भंडार की मास्टर शाखा को अपने वर्तमान हेड के साथ अपडेट करें शाखा, गैर-फास्ट-फॉरवर्ड अपडेट की इजाजत देता है। तो, यह 'गिट पुश हेड-एफ' के साथ समान है। मेरे लिए, मुझे लगता है कि, आप इसे करने के लिए एक और अधिक सौम्य तरीके का उपयोग कर सकते हैं, पहले, 'गिट fetch' का उपयोग करें, उसके बाद, 'गिट रिबेस-उत्पत्ति/मास्टर' का उपयोग करें, इससे आपको कामों का चयन करने दिया जाएगा। – Tim

4

'remote: error: denying non-fast-forward refs/heads/master (you should pull first)'

यह संदेश बताता है कि सर्वर पर एक हुक है जो तेजी से आगे धक्का दे रहा है। हां, आमतौर पर इसकी अनुशंसा नहीं की जाती है और यह एक अच्छा गार्ड है, लेकिन चूंकि आप इसका उपयोग करने वाले एकमात्र व्यक्ति हैं और आप बल धक्का करना चाहते हैं, तो रेपो के व्यवस्थापक से संपर्क करें ताकि अस्थायी रूप से अस्थायी रूप से हटाए जा सकें हुक या आपको ऐसा करने के लिए हुक में अनुमति दे रही है।

+1

या, व्यवस्थापक को 'गिट शाखा-एफ' चलाएं, जिसका एक ही प्रभाव है लेकिन प्री-प्राप्त हुक के साथ झगड़ा करने की आवश्यकता नहीं है। – torek

10

बस

git pull origin [branch] 

करते हैं और उसके बाद आप पुश करने के लिए सक्षम होना चाहिए।

आप अपने दम पर प्रतिबद्ध है और शाखा अभी तक धक्का नहीं किया, तो

git pull --rebase origin [branch] 

कोशिश करते हैं और उसके बाद आप पुश करने के लिए सक्षम होना चाहिए।

0

क्या मैं समस्या को हल करने किया था:

git pull origin [branch] 
git push origin [branch] 

इसके अलावा चलाकर सुनिश्चित करें कि आप सही शाखा की ओर इशारा करते हैं:

git remote set-url origin [url] 
संबंधित मुद्दे