इगत ने गैर-फास्ट-फॉरवर्ड को अस्वीकार कर दिया


89

मुझे यह संदेश जीथब रिपॉजिटरी पर धकेलते हुए मिल रहा है। क्या आप मुझे इसे ठीक करने के लिए चरण-दर-चरण प्रक्रिया बता सकते हैं? मैंने केवल एक बार धक्का दिया और यह सफल रहा। लेकिन, जब मैंने एक परियोजना को अद्यतन किया और अपनी दूसरी प्रतिबद्धताओं को आगे बढ़ाने की कोशिश की, तो यह दिखाता है "मास्टर ने गैर-फास्ट-फॉरवर्ड को अस्वीकार कर दिया" और मुझे धक्का देने की अनुमति नहीं देता है। कृपया प्रक्रिया बताएं।


I`ve को "README के ​​साथ इस रिपॉजिटरी को प्रारंभिक करें" के साथ एक नया रेपो बनाने के बाद भी यही समस्या आई। मैंने उस एक को हटा दिया और इस चेचबॉक्स के बिना फिर से बना।
andrew

@andrew सही है
Dany Wehbe

जवाबों:


226

मुझे यही समस्या थी और मैं इसे ठीक करने में सक्षम था। afk5min सही था, समस्या वह शाखा है जिसे आपने दूरस्थ रिपॉजिटरी में बदलने के बाद से कोड खींच लिया है। मानक git प्रथाओं के अनुसार ( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes ), आपको (अब) दूरस्थ रिपॉजिटरी में उन परिवर्तनों को आपके द्वारा अपने स्थानीय परिवर्तनों में मर्ज करना होगा। कर सकते हैं। यह समझ में आता है, यह आपको अन्य परिवर्तनों को लेने और उन्हें अपने कोड में मर्ज करने के लिए मजबूर करता है, यह सुनिश्चित करता है कि आपका कोड जगह में अन्य परिवर्तनों के साथ कार्य करना जारी रखता है।

वैसे भी, कदमों पर।

  1. उस ब्रांच को लाने के लिए जिसे आप मूल रूप से खींचते हैं, उसे लाने के लिए कॉन्फ़िगर करें।

  2. दूरस्थ शाखा लाएँ।

  3. उस दूरस्थ शाखा को अपनी स्थानीय शाखा में मर्ज करें।

  4. अपने स्थानीय रेपो में परिवर्तन (मर्ज) बदलें।

  5. रिमोट रेपो में परिवर्तन पुश।

विस्तार से...

  1. ग्रहण में, 'Git Repositories' दृश्य खोलें।

  2. सुनिश्चित करें कि आप अपने स्थानीय भंडार को देखते हैं और दूरस्थ भंडार को एक सबफ़ोल्डर के रूप में देख सकते हैं। मेरे संस्करण में, इसे रिमोट्स कहा जाता है, और फिर मैं इसके भीतर दूरस्थ परियोजना देख सकता हूं।

  3. बाईं ओर इंगित करने वाले हरे तीर के लिए देखें, यह 'लाने' वाला तीर है। राइट क्लिक करें और 'फ़िंच फ़ॉन्च' चुनें।

  4. आपको यूआरआई देखना चाहिए, यह सुनिश्चित करें कि यह दूरस्थ रिपॉजिटरी को इंगित करता है।

  5. पॉप-अप के रेफ मैपिंग अनुभाग में देखें। मेरा खाली था। यह इंगित करेगा कि आप कौन से दूरस्थ संदर्भ प्राप्त करना चाहते हैं। 'जोड़ें' पर क्लिक करें।

  6. शाखा नाम में आपको दूरस्थ रिपॉजिटरी से लाने की आवश्यकता है। मेरा 'मास्टर' था (btw, यहाँ एक ड्रॉपडाउन बढ़िया होगा !!, अभी के लिए, आपको इसे टाइप करना होगा)। पॉप-अप के माध्यम से जारी रखें, अंततः 'फिनिश' पर क्लिक करें।

  7. 'सेव और फ़ेच' पर क्लिक करें। यह उस दूरस्थ संदर्भ को लाएगा।

  8. अपने स्थानीय भंडार के 'शाखाओं' फ़ोल्डर में देखें। अब आपको दूरस्थ फ़ोल्डर में उस दूरस्थ शाखा को देखना चाहिए। फिर, मैं 'मास्टर' देखता हूं।

  9. 'शाखाएँ' के 'स्थानीय' फ़ोल्डर में स्थानीय शाखा पर राइट-क्लिक करें, जिसे 'मास्टर' नाम दिया गया है। 'मर्ज' का चयन करें, और फिर दूरस्थ शाखा का चयन करें, जिसे 'मूल / मास्टर' नाम दिया गया है।

  10. मर्ज के माध्यम से प्रक्रिया।

  11. अपने स्थानीय भंडार में कोई परिवर्तन करें।

  12. दूरस्थ रिपॉजिटरी में अपने परिवर्तन पुश करें।

  13. जाओ एक स्वादिष्ट पेय है, अपने आप को बधाई। बाकी दिन छुट्टी लें।


7
इसे उत्तर के रूप में चिह्नित किया जाना चाहिए। एक जादू की तरह काम किया। यह समस्या तब भी होती है जब मैंने ग्रहण में अपने प्रोजेक्ट के लिए GitHub पर रेपो के निर्माण पर कोई भी फाइल (सामान्य README- फाइल) नहीं जोड़ी थी। चरण-दर-चरण अन्वेषण का पालन करने में आसान के लिए बहुत बहुत धन्यवाद।
rbaleksandar

इस समस्या को सुलझाने में मुझे एक साल लग गया, जब तक कि मैंने आपकी पोस्ट नहीं पढ़ी। मेरे मामले में, मेरे पास कोई रिमोट नहीं था लेकिन एक्लिप्स ने 'मूल' नामक एक डिफ़ॉल्ट बनाया।
यूजीन वैन डेर मर्व

मीठा, अंत में मैं ग्रहण के साथ विलय कर सकता हूं। यहां मुख्य बिंदु म्यूट करने के लिए Git Repositories दृश्य का उपयोग करना है, न कि सामान्य टीम सिंक्रनाइज़ दृश्य। यह अच्छा होगा यदि टीम में दृश्य को सिंक्रनाइज़ करें eGit उन सभी विकल्पों को अक्षम कर सकता है जो कुछ भी नहीं करते हैं।
डेन कार्टर

1
जबकि यह काम करता है, यह एक अनावश्यक मर्ज कमिट बनाता है। आपको यहां रिबास का उपयोग करना चाहिए, जो ठीक है क्योंकि आपके परिवर्तन केवल स्थानीय हैं इसलिए आप किसी भी प्रकाशित इतिहास को नहीं बदल रहे हैं (और यदि आपने ऐसा किया है, तो गिट आपको एक गैर-फास्ट-फ़ॉरवर्ड पुश के लिए वैसे भी चिल्लाएगा)। मुझे MYN का जवाब पसंद है।
nyuszika7h

1
परियोजना पर राइट क्लिक करें और फिर Mergeमास्टर में और फिर राइट क्लिक प्रोजेक्ट पर push branch Masterकाम किया
user1207289

17

मेरे मामले में मैंने Force Updateधक्का देते हुए चेकबॉक्स को चुना । इसने एक जादू की तरह काम किया।


इसने मेरे लिए भी काम किया। मेरे पास एक संशोधन के बाद ओपी की स्थिति थी। और मुझे लाने के लिए "कुछ भी नहीं लाने के लिए"
Twilite

11

इस बीच (जब आप अपनी परियोजना को अपडेट कर रहे थे), अन्य कमिट 'मास्टर' शाखा में किए गए हैं। इसलिए, आपको उन परिवर्तनों को खींचना चाहिए जो आपके परिवर्तनों को आगे बढ़ाने में सक्षम हों।


4
इस मामले में गिट काफी बेवकूफ है, मैंने रिमोट में सभी बदलावों को आगे बढ़ाया। और मैं इस परियोजना पर केवल एक ही काम कर रहा हूँ। पृथ्वी पर मुझे फिर से पुश करने से पहले रिमोट को खींचने की आवश्यकता क्यों है ???? खींचा गया परिवर्तन मूल रूप से मेरे स्थानीय
जुन्चेन लियू जुएल

7

ग्रहण के लिए लागू लूना + ग्रहण 3.6.1

मैं,

  1. क्लोन गिट रिपोजिटरी
  2. स्रोत कोड में कुछ बदलाव किए
  3. Git Staging View से मंचन परिवर्तन
  4. अंत में, कमिट और पुश!

और मैंने ईजीत के साथ इस मुद्दे का सामना किया और यहां बताया गया है कि मैंने इसे कैसे तय किया ..

हां, किसी ने मेरे बदलाव करने से पहले बदलाव किया। इसलिए परिवर्तन खारिज कर दिए जाते हैं। इस त्रुटि के बाद, परिवर्तन वास्तव में स्थानीय भंडार के लिए प्रतिबद्ध हो जाता है। मैं केवल Pullबदलाव नहीं करना चाहता था क्योंकि मैं चाहता था कि linear historyजैसा कि बताया गया है - किन मामलों में `गिट पुल` हानिकारक हो सकता है?

इसलिए, मैंने निम्नलिखित चरणों को निष्पादित किया

  1. Git रिपॉजिटरी के नजरिए से, संबंधित Git
    प्रोजेक्ट पर राइट क्लिक करें
  2. सेलेक्ट करें Fetch from Upstream- यह रिमोट अपडेट्स (Refs और ऑब्जेक्ट्स) लाती है लेकिन कोई भी अपडेट स्थानीय रूप से नहीं किया जाता है। अधिक जानकारी के लिए देखें 'गिट पुल' और 'गिट लाने' में क्या अंतर है?
  3. चयन करें Rebase...- यह एक पॉपअप खोलें, यह Preserve merges during rebaseदेखने के लिए क्लिक करें कि
    वास्तव में git के "रिबेस - लेबर-मर्ज" (और क्यों?) का क्या मतलब है?
  4. पर क्लिक करें Rebase button
  5. अगर वहाँ है / a हैं conflict(s), तो चरण 6 पर जाएँ चरण 11
  6. एक Rebase Resultपॉपअप दिखाई देगा, बस पर क्लिक करेंOK
  7. file comparatorखुल जाएगा, आपको संशोधित करने की आवश्यकता है left side file
  8. एक बार जब आप सही ढंग से परिवर्तन विलय के साथ कर रहे हैं, गोटो Git Stagingदृश्य
  9. stage the changes। अर्थातadd to index
  10. उसी दृश्य पर, Rebase-> पर क्लिक करें Continue। 7 से 10 तक दोहराएं जब तक कि सभी संघर्ष हल न हो जाएं।
  11. से Historyदेखने के लिए, अपने चयन पंक्ति प्रतिबद्ध और चुनेंPush Commit
  12. चयन Rebase Commits of local.......चेकबॉक्स और अगले क्लिक करें। देखें क्यों - Git: अपस्ट्रीम से विकास शाखा पर छूट
  13. पर क्लिक करें Finish

ध्यान दें: यदि आपके पास कई स्थानीय रिपॉजिटरी हैं, तो आपको कई मर्जों से बचने के लिए एक प्रतिबद्ध में उन्हें स्क्वैश करने की आवश्यकता है।


मैं मर्ज के बजाय रिबेट का उपयोग करने से सहमत हूं। यह बेहतर है क्योंकि यह एक अनावश्यक मर्ज कमिट नहीं बनाता है। (ऑफ टॉपिक: स्टैक ओवरफ्लो पूरी तरह से हास्यास्पद है और मेरी टिप्पणी पूरी तरह से इस तथ्य पर आधारित है कि मैंने मूल रूप से "+1 फॉर" लिखा था। मेरी टिप्पणी पूरी तरह से रचनात्मक है, धन्यवाद।)
nyuszika7h

4

कॉन्फ़िगर किए गए संदेश प्राप्त होने पर कोड को पुश करने के बाद, कॉन्फ़िगर पर क्लिक करें और इस चित्र में दिखाए गए अनुसार Add spec पर क्लिक करें

स्रोत रेफ और गंतव्य रेफरी ड्रॉप डाउन करें और Ref / heads / yourbranchname पर क्लिक करें और फिर Add Spec पर क्लिक करें

यहाँ छवि विवरण दर्ज करें सुनिश्चित करें कि आप बल अद्यतन का चयन करें

यहाँ छवि विवरण दर्ज करें अंत में बचाने और रेपो के लिए कोड धक्का


3

खुला देखें दृश्य:

1- अपनी परियोजना का चयन करें और मर्ज चुनें 2- रिमोट ट्रैकिंग का चयन करें 3- ठीक क्लिक करें

Git दूरस्थ शाखा को स्थानीय भंडार के साथ विलय कर देगा

4- फिर धक्का


2

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


लगता है कि बहुत से लोग इस सरल संकल्प को याद कर रहे हैं: D
Black

0

मैंने पाया है कि आप गिट की नवीनतम प्रतिबद्धता पर होना चाहिए। तो ये कदम उठाने हैं: 1) सुनिश्चित करें कि आप एक ही फाइल पर काम नहीं कर रहे हैं, अन्यथा आप DITY_WORK_TREE त्रुटि में चलेंगे। 2) नवीनतम परिवर्तनों को खींचो। 3) अपने अपडेट करें।

उम्मीद है की यह मदद करेगा।


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