"गैर-तेज़-फ़ॉरवर्ड अपडेट को अस्वीकार कर दिया गया" का अर्थ क्या है?


153

मैं अपने दो कंप्यूटर और मेरे विकास का प्रबंधन करने के लिए Git का उपयोग कर रहा हूं। मैं GitHub में परिवर्तन करने की कोशिश कर रहा हूं और मुझे त्रुटि मिल रही है।

कुछ रेफरी को पुश करने में विफल <repo>। आपको इतिहास को खोने से रोकने के लिए, गैर-फास्ट-फ़ॉरवर्ड अपडेट को अस्वीकार कर दिया गया था। दोबारा धकेलने से पहले दूरस्थ परिवर्तन मर्ज करें।

यह क्या कारण हो सकता है और मैं इसे कैसे ठीक कर सकता हूं?

संपादित करें:

रेपो खींचना निम्नलिखित रिटर्न देता है:

* शाखा मास्टर-> मास्टर (गैर-फास्ट-फॉरवर्ड) पहले से ही अद्यतित

धक्का देना अभी भी मुझे पूर्वोक्त त्रुटि देता है।


जवाबों:


136

GitHub "कहा जाता है एक अच्छा अनुभाग है गैर तेजी से आगे" त्रुटियों से निपटना " "

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

अन्य मामलों में यह त्रुटि स्थानीय रूप से git commit --amendया जैसे आदेशों का उपयोग करके किए गए विनाशकारी परिवर्तनों का परिणाम है git rebase
जब आप कमांड --forceको जोड़कर रिमोट को ओवरराइड कर सकते हैं push, तो आपको केवल ऐसा करना चाहिए यदि आप बिल्कुल निश्चित हैं कि यह वही है जो आप करना चाहते हैं।
फोर्स-पुश अन्य उपयोगकर्ताओं के लिए समस्या पैदा कर सकता है, जिन्होंने दूरस्थ शाखा को प्राप्त किया है, और इसे बुरा अभ्यास माना जाता है। जब संदेह हो, तो जोर-जबरदस्ती न करें


Git रिमोट पर तेज़-फ़ॉर-मर्ज की तरह परिवर्तन नहीं कर सकता है, जो एक विज़ुअल Git संदर्भ दिखाता है:

वैकल्पिक शब्द

यह वास्तव में आपका मामला नहीं है , लेकिन यह देखने में मदद करता है कि "फास्ट-फ़ॉरवर्ड" क्या है (जहां HEADएक शाखा का हाल ही में एक और नई कमेटी में स्थानांतरित किया गया है)।


" branch master->master (non-fast-forward) Already-up-to-date" आमतौर पर स्थानीय शाखाओं के लिए होता है जो अपने दूरस्थ काउंटर-पार्ट को ट्रैक नहीं करते हैं।
उदाहरण के लिए देखें यह एसओ प्रश्न " गिट पुल अप-टू-डेट कहता है लेकिन गिट पुश गैर-फास्ट फॉरवर्ड को अस्वीकार करता है "।
या दो शाखाएं जुड़ी हुई हैं, लेकिन उनके संबंधित इतिहास से असहमति में:
" कभी खत्म न होने वाली जीआईटी कहानी - क्या मैं यहां गलत कर रहा हूं? "

इसका मतलब है कि आपकी तोड़फोड़ शाखा और आपकी दूरस्थ गिट मास्टर शाखा किसी बात पर सहमत नहीं है।
कुछ परिवर्तन को धक्का दिया गया था / जो एक दूसरे में नहीं था।
आग लगाओ gitk --all, और यह आपको एक सुराग देना चाहिए कि क्या गलत हुआ - इतिहास में "कांटे" की तलाश करें।


53

इसका मतलब यह है कि आपके द्वारा किए गए रिमोट रिपॉजिटरी से अलग अन्य कमिट्स को धक्का दिया गया है। आप आमतौर पर इसे हल कर सकते हैं a

git pull

धक्का देने से पहले

अंततः, "फास्ट-फ़ॉरवर्ड" का मतलब है कि कमिट्स को मर्ज की आवश्यकता के बिना सीधे काम करने वाले पेड़ के शीर्ष पर लागू किया जा सकता है।


2
इसी से मेरा काम बना है! मैं भूल गया कि मैंने रिपॉजिटरी साइट पर readme.md को बदल दिया है!
रैनविनचेस्टर

14

एक तेज़-फ़ॉरवर्ड अद्यतन वह है जहाँ केवल एक तरफ एक परिवर्तन होता है, दूसरी तरफ सबसे हालिया कमिटमेंट के बाद, इसलिए किसी अन्य विलय की आवश्यकता नहीं होती है। यह कह रहा है कि आपको धक्का देने से पहले अपने परिवर्तनों को मर्ज करने की आवश्यकता है।


8

आप इस मामले में बल प्रयोग के साथ बल प्रयोग करना चाह सकते हैं

git पुश ओरिजनल मास्टर --फोर्स


1
यह गलत है।
जीथुब

6

कभी नहीं एक है git -fकरने के लिए pushके रूप में यह बाद में विनाशकारी परिणाम हो सकती है।

आपको बस git pullअपनी स्थानीय शाखा की आवश्यकता है।

उदाहरण के लिए:

git pull origin 'your_local_branch'

और फिर ए git push


0

conflicts locallyदूरस्थ रेपो / फोर्क में अपने परिवर्तनों को धकेलने से पहले आपको विलय और समाधान करने की आवश्यकता है ।

1) पुल (लाने और मर्ज)

$ git pull remote branch 

2) परिवर्तनों को धक्का दें

$ git push remote branch 

फिर भी आपके पास विकल्प pushका उपयोग करके जबरन चयन करने की एक त्वरित पसंद है, --forceलेकिन इससे बचा जाना चाहिए क्योंकि इसके परिणामस्वरूप नुकसान में कमी हो सकती है या अन्य योगदानकर्ताओं पर बुरा असर पड़ सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.