Git पुश "गैर-फास्ट-फ़ॉरवर्ड" अस्वीकृत


91

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

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

अब मैं अपने बदलावों को आगे बढ़ाना चाहता हूं, और इसलिए निम्न कमांड चलाना चाहता हूं

$ git push origin feature/my_feature_branch

मुझे निम्नलिखित त्रुटि देता है:

To ssh://git@coderepo.com:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

त्रुटि से छुटकारा पाने के लिए मैं क्या कर सकता हूं?

पुनश्च: मैं --forceविकल्प का यथासंभव उपयोग करने से बच रहा हूं ।


जवाबों:


79

ऐसा लगता है कि, कि किसी को अपने आखिरी के बीच नई प्रतिबद्ध धक्का दे दिया git fetchऔर git push। इस मामले में आपको अपने चरणों को दोहराने और my_feature_branchएक बार फिर से प्रयास करने की आवश्यकता है ।

git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch

के बाद git fetchमैं के साथ स्थिति की जांच करने की सलाह देते हैं gitk --all


1
Git पुल ओरिजनल मास्टर को इनेबल करने के लिए क्या करें: मास्टर जिसे डिफॉल्ट करने के लिए विलय करना चाहिए। यह मर्ज संघर्ष है या नहीं। यह केवल और केवल एक प्रश्न है।
मैथिक

25

संभवतः आपने रिबेस से पहले रिमोट में बदलाव नहीं किया था या किसी ने नए बदलावों को धक्का दिया था (जबकि आप रिबास कर रहे थे और पुश करने की कोशिश कर रहे थे)। इन चरणों का प्रयास करें:

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch origin feature/my_feature_branch:tmp

#rebasing on local 'tmp' branch
git rebase tmp

#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch

#removing temporary created 'tmp' branch
git branch -D tmp

यह मेरी समस्या को हल करता है: जब मैंने अपना कोड प्रतिबद्ध किया था, तो मैंने एक रिबेस किया था (बहुत देर हो चुकी थी, पहले से ही बदलाव थे, इसे कमिट करने से पहले करना चाहिए)। तब भी कोई संघर्ष नहीं था, मैं धक्का नहीं दे सकता था। जादू से ऊपर आवेदन करने के बाद, यह काम किया। धन्यवाद।
जिंग ली

19

मुझे यह समस्या थी! मैंने कोशिश की: git लाने + git मर्ज, लेकिन हल नहीं! मैंने कोशिश की: गिट पुल, और भी हल नहीं

तब मैंने यह कोशिश की और अपनी समस्या का समाधान किया (यह इंजीनियर के उत्तर के समान है):

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

8
इसने मुझे डरा दिया, मैंने सामान को सीधे मास्टर को धकेल दिया और एक पूरे दिन से तैनाती को धक्का दे दिया ... और हर कोई नाराज है .... भयानक सुझाव!
माइक क्यू

6
संभवत: किसी को एक खतरनाक उपकरण देने से पहले आप संक्षेप में बता रहे हैं कि आप क्या कर रहे हैं।
मीरव - मैट

10

मुझे एक समान समस्या थी और मैंने इसे हल किया: git pull origin


1
दूरस्थ शाखा खींचते समय प्रश्न में त्रुटि मिलने पर मेरी मदद की।
GChuf

8

मुझे पार्टी में देर हो गई है लेकिन मुझे जीथब हेल्प पेज में कुछ उपयोगी निर्देश मिले और मैं उन्हें यहाँ साझा करना चाहता था।

कभी-कभी, Git बिना कमिट किए किसी दूरस्थ रिपॉजिटरी में आपका परिवर्तन नहीं कर सकता है। जब ऐसा होता है, तो आपके पुश को मना कर दिया जाता है।

यदि किसी अन्य व्यक्ति ने आपको उसी शाखा में धकेल दिया है, तो Git आपके परिवर्तनों को धक्का नहीं दे पाएगा:

$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.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.

आप दूरस्थ शाखा पर किए गए परिवर्तनों को स्थानीय स्तर पर किए गए परिवर्तनों के साथ लाकर और विलय करके इसे ठीक कर सकते हैं:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

या, आप बस git pullएक ही बार में दोनों कमांड्स करने के लिए उपयोग कर सकते हैं :

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work

4

इस आदेश का प्रयास करें

$ git push -f -u origin <name of branch>

अर्थात $ git push -f -u origin master


जब दूसरों ने ऐसा नहीं किया तो मेरे मामले में काम किया। कभी-कभी आपको सिर्फ git -f -u
gcr

1

साझा स्थानीय भंडार पर ताला लिखें

मुझे यह समस्या थी और उपरोक्त किसी भी सलाह ने मेरी मदद नहीं की। मैं सब कुछ सही ढंग से लाने में सक्षम था। लेकिन धक्का हमेशा असफल रहा। यह एक स्थानीय रिपॉजिटरी थी जो विंडोज़ निर्देशिका पर कई ग्राहकों के साथ काम करती थी, जो VMWare साझा फ़ोल्डर ड्राइवर के माध्यम से इसके साथ काम करते थे। ऐसा प्रतीत हुआ कि सिस्टम में से एक ने लेखन के लिए गिट रिपॉजिटरी को बंद कर दिया। प्रासंगिक VMWare सिस्टम को रोकने के बाद, जिसके कारण लॉक ने तुरंत मरम्मत की। यह पता लगाना लगभग असंभव था कि कौन सी प्रणाली त्रुटि का कारण बनती है, इसलिए मुझे सफल होने तक उन्हें एक-एक करके रोकना पड़ा।


1

वैसे मैंने यहाँ सलाह का इस्तेमाल किया और इसने मुझे डरा दिया क्योंकि इसने मेरे स्थानीय कोड को सीधे मास्टर में मिला दिया। .... तो नमक के दाने के साथ यह सब ले लो। मेरे सहकर्मी ने कहा कि निम्नलिखित ने इस समस्या को हल करने में मदद की, मेरी शाखा को फिर से तैयार करने की जरूरत है।

 git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch

0

ग्रहण में निम्नलिखित कार्य करें:

जीआईटी रिपोजिटरीज़> रिमूव्स> ओरिजिन> राइट क्लिक करें और बोलें भ्रूण

GIT रिपॉजिटरी> रिमोट ट्रैकिंग> अपनी शाखा का चयन करें और मर्ज कहें

प्रोजेक्ट पर जाएं, अपनी फाइल पर राइट क्लिक करें और अपस्ट्रीम से Fetch बोलें।


0
  1. एक नई शाखा में कोड को स्थानांतरित करें - गिट शाखा -b tmp_branchyouwantmergedin
  2. उस शाखा में परिवर्तन करें जिसे आप मर्ज करना चाहते हैं - git checkout mycoolbranch
  3. उस शाखा को रीसेट करें जिसे आप मर्ज करना चाहते हैं - git शाखा रीसेट --hard HEAD
  4. tmp शाखा को वांछित शाखा में विलय करें - git शाखा विलय tmp_branchyouwantmergedin
  5. उत्पत्ति के लिए धक्का


-1
  1. स्थानीय प्रतिबद्ध को पूर्ववत करें। यह सिर्फ कमिट को पूर्ववत करेगा और कार्य प्रतिलिपि में परिवर्तनों को संरक्षित करेगा
git reset --soft HEAD~1
  1. नवीनतम परिवर्तन खींचो
git pull
  1. अब आप नवीनतम कोड के शीर्ष पर अपने परिवर्तन कर सकते हैं
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.