अस्वीकृत मास्टर -> मास्टर (गैर-फास्ट-फॉरवर्ड)


218

मैं अपनी परियोजना (एक नई रिपॉजिटरी में सभी फाइलें) को आगे बढ़ाने की कोशिश कर रहा हूं। मैं चरणों का पालन करता हूं, लेकिन जब मैं धक्का देता हूं तो मुझे git push -u origin masterयह त्रुटि मिलती है:

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

मुझे कई बार यह त्रुटि मिली और यह पता नहीं चल सका कि क्या करना है।


4
यदि आप सुनिश्चित हैं कि आपके स्थानीय मास्टर में आपके द्वारा दूरस्थ रूप से किए गए नवीनतम परिवर्तन हैं, तो git push --force
IgorGanapolsky

34
git push --force <remote_repository>मेरे लिए काम किया।
सॉर्टर

@ ग्राहक - मुझे पूरे दिन एक ही समस्या रही है, इससे मुझे मदद मिली !! धन्यवाद। लेकिन यह इस बात की व्याख्या नहीं करता है कि यह मुद्दा पहली बार में क्यों हुआ और फिक्स ने काम क्यों किया।
पदवन

1
@pmr, बस flippantly पूछ रहा है कि क्या ओपी "त्रुटि संदेश पढ़ें" बिल्कुल मदद नहीं करता है। जाहिर है, त्रुटि संदेश ओपी के लिए कोई मतलब नहीं था, जैसे कि यह मेरे लिए कोई संदेश नहीं बना था, या अन्य 66 लोग जिन्होंने अपने पोस्ट को अपटूडेट किया। Snarky, wittier-than-हालांकि लोगों की बिल्कुल मदद नहीं करते हैं।
पदवन

3
@ पैडवान आप इस बात पर भी ध्यान देंगे कि इस "कर्कश, विटियर-से-यद्यपि व्यक्ति" ने इस प्रश्न के लिए स्वीकृत उत्तर प्रदान किया और 72 लोगों (शायद आप सहित) ने इसे मददगार पाया। मुझे खेद है कि मेरी टिप्पणी अभिमानी के रूप में सामने आई, लेकिन यह मेरा पहला प्रश्न होता, यदि आपने मुझसे व्यावसायिक संदर्भ में भी यह प्रश्न पूछा होता। कभी-कभी रोकना और एक मिनट लेना ध्यान से त्रुटि संदेश पढ़ने के लिए कभी-कभी चमत्कार करता है। जब मैंने पहली बार उस त्रुटि को देखा तो मेरे लिए किया।
पीर

जवाबों:


160

जैसा कि त्रुटि संदेश कहता है: git pullइससे पहले कि आप प्रयास करें git push। जाहिरा तौर पर आपकी ट्रैकिंग शाखा के साथ आपकी स्थानीय शाखा सिंक से बाहर है।

परियोजना के नियमों और आपके वर्कफ़्लो के आधार पर आप भी उपयोग करना चाह सकते हैं git pull --rebase


1
यह मुझे दिखाता है कि यह ऑटो-मर्जिंग README.md स्वचालित मर्ज विफल हो गया; संघर्ष को ठीक करें और फिर परिणाम करें।
आसंतोय 17

1
@ Asantoya17 परिवर्तन जो आपके परिवर्तनों के साथ दूरस्थ मास्टर संघर्ष पर किया गया है। फ़ाइल की समीक्षा करें और उनकी समीक्षा करें। फिर हल करने के लिए प्रतिबद्ध हैं। कृपया एक ट्यूटोरियल या पुस्तक प्राप्त करें या कम से कम संदेशों को पढ़ें।
दोपहर

1
पुल का मतलब क्या है? आपको किसी फ़ाइल को लाने या लाने और भंडार की वेबसाइट से फ़ाइल डाउनलोड करने में सक्षम करता है? (उदा। बिट बाल्टी)
डेविड दिमलता

4
@AndrewS git push --force origin master। यदि आप अपने जीवन में एक से अधिक बार इस तरह के मुद्दों में भाग लेते हैं, तो आपका प्रोजेक्ट वर्कफ़्लो टूट जाता है। सुविधाओं को शाखाओं में विकसित किया जाना चाहिए और तेजी से अग्रेषित किए बिना विलय कर दिया जाना चाहिए और यदि कोई विशेषता "विफल" हो गई है, तो आपको मर्ज कमिट को वापस करना चाहिए (मास्टर करने के लिए किसी विशेषता को मर्ज करने से पहले आप पहले एक एकीकरण शाखा में अपना परीक्षण करें)। हालांकि ग्रहण के बारे में कोई विचार नहीं है।
दोपहर

1
यदि वह त्रुटि रिपोर्ट करता है तो क्या करें git pull origin trunk:master?
एंड्री

175

सूचना: यह गिट के उपयोग की सिफारिश नहीं है। यह रिमोट पर परिवर्तन को अधिलेखित कर देगा। इसे केवल तभी करें जब आप 100% जानते हैं कि आपके स्थानीय परिवर्तनों को दूरस्थ मास्टर को धकेल दिया जाना चाहिए।

इसे इस्तेमाल करे: git push -f origin master


47
नहीं, यह कोशिश मत करो। प्रेषक git help push: "इससे दूरस्थ रिपॉजिटरी को कमियों का सामना करना पड़ सकता है; इसका उपयोग सावधानी से करें।"
jcsahnwaldt मोनिका सेप

7
निश्चित रूप से ऐसा न करें
लुल्ली

14
यह मेरे लिए काम किया। मुझे लगा कि यह ठीक है क्योंकि गितुब पर मेरी एकमात्र प्रतिबद्धता एक नए रेपो के साथ बनाई गई थी। शायद एक अच्छा विचार एक परियोजना की शुरुआत के बाद इसका उपयोग नहीं करने के लिए।
मैथ्यू मूर

1
उपयोगी हो सकता है यदि आप एक रेपो को अद्यतन करना चाहते हैं जो वितरण उद्देश्य के लिए बनाया गया था (इसलिए दूरस्थ तरफ कोई नया परिवर्तन नहीं)
HiB

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

18

इस कमांड ने मेरे लिए अच्छा काम किया

git push -f origin master

3
इस आदेश का उपयोग करने से पहले सतर्क रहें। इस कमांड का उपयोग करके आप अपने सभी पुराने कमिट खो देंगे।
twenk11k

does -f का मतलब बलपूर्वक धक्का देना
maheshmnj

@ ममहेशमंज जी!
परीक्षार्थी

15

मुझे सिर्फ यह त्रुटि मिली है।

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

git pull https://github.com/*username*/*repository*.git master

रिपोजिटरी URL यहाँ से प्रोजेक्ट जीथब पेज पर मिला है:

यहां छवि विवरण दर्ज करें

मैंने फिर से आरंभ किया (इसकी आवश्यकता नहीं हो सकती है)

git init
git add .
git commit -m "update"

फिर धक्का:

git push

3
यह उत्तर वास्तविक मामले के परिदृश्य को दर्शाता है।
काटा

9

मैंने गितुब में नया रेपो बनाया था और मुझे भी यही समस्या थी, लेकिन इसे खींचने के दौरान भी समस्या थी, इसलिए इसने मेरे लिए काम किया।

लेकिन रेपो में यह सलाह नहीं दी जाती है कि पहले से ही कई कोड हैं क्योंकि यह सब कुछ गड़बड़ कर सकता है

git push origin master --force

यह उत्तर पहले से ही दिया गया है: stackoverflow.com/a/16374574/1771479 , और करने की सलाह नहीं दी गई है।
agold

9

चेतावनी:

एक ' git pull' के लिए जाना हमेशा एक समाधान नहीं है, इसलिए लापरवाह रहें । यदि आप जानबूझकर अपना रिपॉजिटरी इतिहास बदल चुके हैं तो आपको इस समस्या (क्यू में उल्लेखित है) का सामना करना पड़ सकता है। उस स्थिति में, git आपके दूरस्थ रेपो में नए परिवर्तनों के साथ आपके इतिहास परिवर्तनों को भ्रमित कर रहा है। तो, आपको एक के लिए जाना चाहिए git push --force, क्योंकि कॉलिंग git pullआपके इतिहास में किए गए सभी परिवर्तनों को जानबूझकर कर देगी।


8

यदि git pullमदद नहीं करता है, तो शायद आपने अपने परिवर्तनों (ए) को धकेल दिया है और उसके बाद git commit --amendकुछ और बदलाव (बी) जोड़ दिए थे। इसलिए, git को लगता है कि आप इतिहास को खो सकते हैं - यह B को एक अलग प्रतिबद्ध के रूप में व्याख्या करता है, क्योंकि इसमें A से सभी परिवर्तन शामिल हैं।

             B
            /
        ---X---A

यदि कोई भी रेपो को बाद में नहीं बदलता है A, तो आप कर सकते हैं git push --force

हालांकि, अगर Aअन्य व्यक्ति से परिवर्तन होते हैं :

             B
            /
        ---X---A---C

इसके बाद, आपको उस व्यक्ति Aको B( C-> D) से बदलने के लिए फिर से भरना होगा ।

             B---D
            /
        ---X---A---C

या समस्या को मैन्युअल रूप से ठीक करें। मुझे नहीं लगा कि अभी तक कैसे करना है।


7

इस आदेश का उपयोग करें:

git pull --allow-unrelated-histories <nick name of repository> <branch name>

पसंद:

git pull --allow-unrelated-histories origin master

यह त्रुटि तब होती है जब परियोजनाओं का कोई सामान्य पूर्वज नहीं होता है।


7
git push -f origin master

ब्रूट बल का प्रयोग करें ;-) सबसे अधिक संभावना है कि आप एक स्थानीय फ़ोल्डर को जोड़ने की कोशिश कर रहे हैं जो आपने रेपो पर बनाने से पहले बनाया था।


2
इस सहित किसी भी और हर जवाब को एक चेतावनी देनी चाहिए।
डी। बेन नोबल

1
मैंने यह कोशिश की और यह मुझे GitHub पर बहुत कम लागत आई जिसे मुझे रेपो के एक अन्य स्थानीय क्लोन से पुनर्स्थापित करना पड़ा। खतरनाक।
पफ्लो

6

ऐसा इसलिए है क्योंकि आपने अपने मास्टर में कुछ बदलाव किए हैं, इसलिए परियोजना आपको पहले खींचने के लिए कहती है। यदि आप इसे किसी भी तरह से आगे बढ़ाना चाहते हैं, तो आप इसे टाइप करके बल प्रयोग कर सकते हैं:

git push -f origin master

पहले अपने बदलावों को याद रखें:

git add .
git commit -m "Your commit message"


4

आपको करने की जरूरत है

git branch

अगर आउटपुट कुछ इस तरह है:

* (no branch)
master

फिर करो

git checkout master

सुनिश्चित करें कि आपके पास कोई लंबित कमिट नहीं है क्योंकि चेक आउट करने से सभी गैर-प्रतिबद्ध परिवर्तन समाप्त हो जाएंगे।


4

! [खारिज] मास्टर -> मास्टर (गैर-फास्ट-फॉरवर्ड)

घबराओ मत, इसे ठीक करना बेहद आसान है। आपको बस एक पुल जारी करना है और आपकी शाखा तेजी से आगे बढ़ेगी:

$ git पुल myrepo मास्टर

फिर अपने पुश को पुनः प्रयास करें और सब कुछ ठीक होना चाहिए:

$ गित धक्का गीथब गुरु


4

यह मेरे साथ तब हुआ जब मैं विकास शाखा में था और मेरी मास्टर शाखा नवीनतम अपडेट के साथ नहीं है।

इसलिए जब मैंने विकास शाखा से धक्का देने की कोशिश की तो मुझे वह त्रुटि मिली।

मैंने इसे मास्टर शाखा, गिट पुल पर स्विच करके तय किया, फिर शाखा और गिट पुश को विकसित करने के लिए वापस जाएं।

$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push

3

मुझे एक विकास मशीन पर यह समस्या थी। devशाखा ठीक धक्का था, लेकिन masterशाखा ने मुझे दिया है (जबकि git pushजब पर किया जा रहा है ing devशाखा):

! [rejected]        master -> master (non-fast-forward)

इसलिए मैंने कोशिश की:

git checkout master
git pull

जो मुझे दिया:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.

मुझे पता चला कि मास्टर शाखा से गायब था .git/configऔर जोड़ा गया था:

[branch "master"]
    remote = origin
    merge = refs/heads/master

बाद git pushमें devशाखा पर भी ठीक काम किया ।


2

मेरा रिमोट स्थानीय के साथ तालमेल में नहीं था इसलिए यह मेरे लिए काम करता है

git pull --rebase

और सुनिश्चित करें कि जब आप git pullफिर से करते हैं तो यह कहना चाहिए कि पहले से ही अद्यतित है और अब आप मूल के लिए धक्का देने के लिए तैयार हैं

आप पहले से ही मान रहे हैं git remote add origin remote repository URL

करना

`git push origin master`  

स्क्रीनशॉट यह सब कहते हैं यहां छवि विवरण दर्ज करें

वैकल्पिक रूप से आप ऐसा कर सकते हैं

  1. git stash (अस्थायी रूप से काम न किए गए स्टोर)
  2. गिट पुल (अपने स्थानीय और रिमोट को सिंक में बनाएं)
  3. git stash पॉप (आप बिना परिवर्तन किए वापस जाएं)
  4. जोर का धक्का

1

मेरा भी यही मुद्दा था। मैं Git Totoise का उपयोग करता हूं। जस्ट राइट क्लिक -> टोटोइसगिट -> क्लीन अप। अब आप गितुब को धक्का दे सकते हैं यह मेरे साथ ठीक काम किया: डी


1

ऐसा इसलिए है क्योंकि आपने इसके मास्टर में परस्पर विरोधी परिवर्तन किए हैं। और आपका रिपॉजिटरी सर्वर आपको यह बताने में सक्षम नहीं है कि इन शब्दों के साथ, इसलिए यह त्रुटि देता है क्योंकि यह उसके लिए नहीं है कि वह आपके लिए इन टकरावों से निपटे, इसलिए वह आपसे यह करने के लिए कहता है। जैसा ?

1- git pull यह आपके कोड को आपके रिपॉजिटरी से आपके साइट मास्टर के आपके कोड में मर्ज कर देगा। इसलिए संघर्ष दिखाए जाते हैं।

2- इन मैनुअलमेन्ट संघर्षों का इलाज करें।

3-

git push origin master

और प्रेस्टो, आपकी समस्या हल हो गई है।


0

केवल मैं ही इस मुद्दे को हल करने में सक्षम था स्थानीय और गिट रेपो को हटा दें और दोनों सिरों पर फिर से समान बनाएं। अभी के लिए ठीक काम करता है।


मैं हमेशा ड्रॉपबॉक्स पर अपने git रेपो का बैकअप रखता हूं। इस तरह मुझे स्थानीय रेपो को हटाने की आवश्यकता नहीं है, मैं स्थिति उत्पन्न होने पर ड्रॉपबॉक्स से प्रासंगिक निर्देशिकाओं को कॉपी और पेस्ट करता हूं।
इगोरगानापल्स्की

0

अगर किसी को हेरोकू पुश करने की कोशिश करते समय यह त्रुटि होती है, तो बस 'ओरिजिन' को 'हेरोकू' से इस तरह बदलें: git push -ffoku मास्टर



0

रेपो को नाम देते समय कुछ नाम त्रुटि के कारण यह भी हो सकता है। यदि उपरोक्त उत्तर में से किसी ने भी काम नहीं किया है। यह मेरे लिए काम करता है:

उस रेपो को हटाएं और एक नया बनाएं और निम्नलिखित कमांड को फिर से आज़माएं:

cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master

यदि मूल शो जोड़ें तो पहले से मौजूद है इसके बजाय इसका उपयोग करें:

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