! [खारिज] मास्टर -> मास्टर (पहले लाने के लिए)


101

क्या यह समझाने का एक अच्छा तरीका है कि ! [rejected] master -> master (fetch first)'जीआईटी में " " कैसे हल किया जाए ?

जब मैं इस कमांड का उपयोग करता हूं तो $ git push origin masterयह एक त्रुटि संदेश प्रदर्शित करता है।

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:zapnaa/abcappp.git'

जवाबों:


132

जवाब है, git आपको पहले लाने के लिए कह रहा है।

संभवतः किसी और ने पहले से ही मास्टर को धक्का दे दिया है, और आपकी प्रतिबद्धता पीछे है। इसलिए आपको बदलाव लाने होंगे, और फिर बदलाव लाना होगा।

यदि आप (या इससे भी बदतर, यदि आप --forceविकल्प का उपयोग करके इसे बाध्य करते हैं ), तो आप प्रतिबद्ध इतिहास को गड़बड़ कर सकते हैं।

संपादित करें: मैं अंतिम बिंदु के बारे में अधिक विस्तार से बताता हूं, क्योंकि यहां एक आदमी ने सिर्फ --forceविकल्प का उपयोग करने की बहुत बुरी सलाह दी थी ।

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

टी एल; डॉ

  1. यदि आप हल करना चाहते हैं, तो पहले प्राप्त करें (और फिर मर्ज करें)।
  2. यदि आप हैक करना चाहते हैं, तो --forceविकल्प का उपयोग करें ।

आपने पूर्व के लिए पूछा, यद्यपि। 1 के लिए जाओ) हमेशा, भले ही आप हमेशा अपने आप से गिट का उपयोग करेंगे, क्योंकि यह एक अच्छा अभ्यास है।


5
क्या स्थानीय फ़ाइलों में महत्वपूर्ण परिवर्तन नहीं लाए जा सकते?
लियोनार्डो कास्त्रो

2
यह एक
भ्रूण के

@ डेडिन जैसा कि मैंने लिखा है, एक मर्ज का पालन किया जाना चाहिए - मुद्दा यह है कि आपको स्थानीय पेड़ को दूरस्थ पेड़ के साथ "संरेखित" करना है (इसलिए मर्ज के साथ) - लेकिन धन्यवाद, मैंने इसे टीएल में लिखा है; DR भी
linuxbandit

87

प्रयत्न:

git fetch origin master
git merge origin master

इस कोड को लिखने के बाद मुझे अन्य त्रुटि मिली: (गैर-फास्ट-फॉरवर्ड)

मैं यह कोड लिखता हूं:

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

और मेरी समस्या का समाधान किया


मेरे लिए भी ऐसा। इससे मेरी समस्या हल हो गई। चेतावनी के एक जोड़े हैं। मैंने एक उप भंडार के साथ खिलवाड़ किया, लेकिन इसे इसके साथ हल किया: stackoverflow.com/questions/19584255/…
एम। ब्यूसोलोल

1
@Aurelio A आपका मर्ज कमांड गलत है, यह होना चाहिए git merge master
माइक

हमें git शाखा -D tmp का उपयोग करने की आवश्यकता क्यों है?
Милош Вељковић

27

आप का उपयोग करना चाहिए git pull, कि कमांड एक git fetchऔर अगले करते हैं git merge

यदि आप एक git push origin master --forceकमांड का उपयोग करते हैं , तो आपको भविष्य में समस्या हो सकती है।


1
क्या यह सही है कि आपको केवल परियोजना का उपयोग करना चाहिए - यदि आप इस परियोजना पर केवल एक हैं और आप अपना पहला धक्का देने की कोशिश कर रहे हैं?
क्रिप्स

20

पुल हमेशा सही दृष्टिकोण होता है, लेकिन एक अपवाद तब हो सकता है जब आप एक जीथ फाइल रिपॉजिटरी में कोई नहीं-गिट फाइल सिस्टम को बदलने की कोशिश कर रहे हों। वहां आपको पहले कमिटमेंट के लिए मजबूर होना पड़ेगा।

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master

मेरे लिए काम करता है, मैंने फिर से एक नया प्रोजेक्ट (वही रेपो) शुरू किया और मैं इसे बदलना चाहता था।
uc

18

इस git कमांड को आज़माएं

git push origin master --force

या बल की कमी -f

git push origin master -f


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

10

जैसा कि यह त्रुटि संदेश में कहा गया है कि आपको "पहले लाना है।" इसने मेरे लिए काम किया। कमांड का उपयोग करें:

  1. git fetch origin master

फिर मर्ज करने के लिए इन चरणों का पालन करें:

  1. git pull origin master
  2. git add .
  3. git commit -m 'your commit message'
  4. git push origin master


3

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

$ git clone --mirror git://example.com/some-big-repo.git

फिर उसके अनुसार कोड का पालन करें:

कमांड लाइन का उपयोग करके GitHub में एक मौजूदा प्रोजेक्ट जोड़ना

यहां तक ​​कि अगर यह काम नहीं करता है, तो आप बस कोड कर सकते हैं:

$ git push origin master --force 

या

$ git push origin master -f

3

नीचे दिए गए चरणों का पालन करें क्योंकि मुझे भी यही समस्या थी:

$ git pull origin master --allow-unrelated-histories 

(यह देखने के लिए कि क्या स्थानीय शाखा को सुदूर के साथ आसानी से मिलाया जा सकता है)

$ git push -u origin master 

(अब स्थानीय git रिपॉजिटरी की पूरी सामग्री को अपने ऑनलाइन रिपॉजिटरी पर धकेलें)


2

यह संभावना है कि किसी और (जैसे आपके सहकर्मी) ने origin/masterआपके स्थानीय masterशाखा में नहीं है , और आप अपने स्थानीय शाखा से सर्वर पर कुछ कमिट्स को पुश करने की कोशिश कर रहे हैं। 99% मामलों में, यह मानते हुए कि आप उनके काम को मिटाना नहीं चाहते हैं origin, आपके पास दो विकल्प हैं:

2) अपने स्थानीय शाखा में उनके परिवर्तन मर्ज करें, और फिर मर्ज किए गए परिणाम को धक्का दें। git checkout master git pull # resolve conflicts here git push

(ध्यान दें कि इस मामले में git pullअनिवार्य रूप से सिर्फ एक git fetchऔर एक git mergeहै।)

1) अपनी स्थानीय शाखा को रिबास करें, ताकि ऐसा लगे कि आपके सहकर्मी ने पहले अपना कमिट किया, और फिर आपने अपना कमिट किया। यह प्रतिबद्ध इतिहास को अच्छा और रैखिक रखता है - और "मर्ज कमिट" से बचा जाता है। हालाँकि, यदि आपके सहकर्मी के बदलावों से आपका टकराव होता है, तो आपको सबसे बुरे मामले में अपने प्रत्येक कमिट (केवल एक बार के बजाय) के लिए उन संघर्षों को हल करना पड़ सकता है। अनिवार्य रूप से यह बाकी सभी के लिए अच्छा है लेकिन आपके लिए अधिक प्रयास है। git pull --rebase # resolve conflicts here git push

(ध्यान दें कि git pull --rebaseअनिवार्य रूप से एक git fetchऔर एक है git rebase origin/master)


2

कभी-कभी ऐसा होता है जब आप आमतौर पर README प्रकार की फ़ाइलों की नकल करते हैं।


1

आपकी त्रुटि मर्ज शाखा के कारण हो सकती है।
बस इस का पालन करें:

चरण 1: git pull origin master(यदि आपको कोई संदेश मिलता है तो इसे अनदेखा करें)
चरण 2: git add .
चरण 3: git commit -m 'your commit message'
चरण 4:git push origin master


1

सबसे पहले, आप का उपयोग करना चाहिए git pull, फिर कमांड एक git fetchऔर अगले git मर्ज करते हैं।

यदि आप एक git push origin master --forceकमांड का उपयोग करते हैं , तो आपको भविष्य में समस्या हो सकती है।


1

मैंने इस तरह एक नई शाखा की जाँच-पड़ताल करके इसे काबू किया:

# git checkout -b newbranch <SHA of master>

# git branch
* newbranch
  master

# git push -u <repo_url_alias> newbranch

आपको 2 शाखा के साथ छोड़ दिया जाता है: मास्टर और न्यूब्रांच, जिसे आप बाद में मर्ज करने का प्रबंधन कर सकते हैं।


0

आपको बस अपने रिमोट नाम के साथ अपनी शाखा का नाम बताना होगा।

git fetch origin
git merge origin/master

0

मेरे मामले में ऐसा होने का कारण GitHub rep लिंक को बनाना था, मैंने इसे README फाइल के साथ आरंभ किया

Git रिमोट बनाते समय इसे README फाइल से इनिशियलाइज़ न करें अन्यथा यह गलत दिखाई देगा

ऐसा न करें और यह निश्चित रूप से ठीक काम करेगा बजाय अगर आप मास्टर शाखा में जाने के बाद चाहें तो इसे रीडमी फ़ाइल के साथ आरंभ करें


0

यह मेरे लिए काम कर गया, क्योंकि किसी भी अन्य समाधान ने मेरे लिए काम नहीं किया। चुनौती नहीं!

https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

बस गिट बैश से गुजरना पड़ा

cd REPOSITORY-NAME
git add .
git commit -m "Resolved merge conflict by incorporating both suggestions."

फिर वापस मेरे cmd और मैं कर सकता था: git push heroku masterजो मेरे मामले में समस्या थी।



0

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

! [अस्वीकृत] मास्टर -> मास्टर (पहले प्राप्त) त्रुटि: 'git@github.com' के लिए कुछ रेफरी पुश करने में विफल

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

--Force कमांड का उपयोग करके समस्या को सफलतापूर्वक हल किया । इसलिए, आपको git पुश ओरिजनल मास्टर --force का उपयोग करना चाहिए





-1

समस्या सुलझ गयी

समस्या मुझे थी

! [rejected]        master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/repo_name/repo-hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

मेरी भी यही समस्या थी। समस्या यह है कि आपके commitsअन्य रिपॉजिटरी में pushedआप सफलतापूर्वक नहीं थे इसलिए आपको निम्नलिखित कमांड चलाने की आवश्यकता है:

  1. git fetch origin master

    उत्पादन: From https://github.com/username/repo-name * branch master -> FETCH_HEAD

  2. git merge origin master

    उत्पादन: Merge made by the 'recursive' strategy. repo-name/ReadMe.md | 1 - 1 file changed, 1 deletion(-)

  3. git push

    उत्पादन: Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.00 KiB | 1.00 MiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/user_name/repo-name.git 0852d5vf..70v56d9 master -> master

बहुत बहुत धन्यवाद

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