git एरर: रिमोट में कुछ रेफ को पुश करने में विफल


450

किसी कारण से, मैं अब धक्का नहीं दे सकता, जबकि मैं कल कर सकता था। शायद मैं विन्यास या कुछ और के साथ गड़बड़ कर दी।

ऐसा ही होता है:

जब मैं git पुश ओरिजिन मास्टर का उपयोग करता हूं

gitbashscr

मेरी वर्किंग डायरेक्टरी और रिमोट रिपॉजिटरी कैसी दिखती है:

Screenshot of Windows file folder with these directories: .git, css, js. And these files: index.php, readme, setsu.php. The word "local" with an arrow points to the css-folder. Below, screenshot with heading "github", and a css-folder and index.php-file


7
ऐसा लगता है कि आपका स्थानीय रेपो, गिट रेपो के साथ तालमेल नहीं बैठा रहा है। क्या आपने गिट पुल करने की कोशिश की?
R11G

1
हाँ, लेकिन git खींचने के बाद मुझे निम्नलिखित सिंटैक्स के साथ कोई विचार नहीं है, यह कहता है कि git pull <रिमोट> <शाखा>, क्या आप मुझे git खींचने के लिए एक उदाहरण सिंटैक्स देखने दे सकते हैं?
लीपजी

1
इस तरह के सवाल की जाँच करें - stackoverflow.com/questions/18588974/…
R11G

3
@ R11G धन्यवाद सर! इस लिंक ने मुझे stackoverflow.com/a/18589043/3626672
leipzy

2
मुझे वह त्रुटि एक नए रेपो पर मिली। इससे मदद मिली: stackoverflow.com/a/6518774/2067690
HumanInDisguise

जवाबों:


619

यदि GitHub रेपो ने नए कमिट्स को देखा है, तो जब आप स्थानीय रूप से काम कर रहे थे, तो मैं इसका उपयोग करने की सलाह दूंगा:

git pull --rebase
git push

पूर्ण वाक्यविन्यास है:

git pull --rebase origin master
git push origin master

Git के साथ 2.6+ (सितंबर 2015), एक बार किए जाने के बाद (एक बार)

git config --global pull.rebase true
git config --global rebase.autoStash true

एक सरल git pullपर्याप्त होगा।
(नोट: Git 2.27 Q2 2020 के साथ , merge.autostashयह आपके नियमित खींचने के लिए भी उपलब्ध है, बिना रीबेस के)

इस तरह, आप (पुन: चलाने के हैं --rebaseके नव अद्यतन शीर्ष पर भाग) अपने स्थानीय करता origin/master(या origin/yourBranch: git pull origin yourBranch)।

अध्याय 6 में और अधिक पूर्ण उदाहरण देखिए Git Pocket Book के पुनर्खरीद के साथ खींचिए

मैं एक की सिफारिश करेंगे:

# add and commit first
git push -u origin master

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

git push

" मुझे एक नई शाखा को स्पष्ट रूप से पुश करने की आवश्यकता क्यों है? " देखें।


चूंकि ओपी पहले से ही रीसेट कर चुका है और इसके लिए अपनी प्रतिबद्धता फिर से तैयार कर रहा है origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

कोई जरूरत नहीं है pull --rebase

नोट: git reset --mixed origin/masterयह भी लिखा जा सकता है git reset origin/master, क्योंकि --mixedउपयोग करते समय विकल्प डिफ़ॉल्ट होता है git reset


क्या यह आपके सुझाए गए गिट पुल --rebase को निष्पादित करने के लिए ठीक है ...? coz मैं पहले से ही किया है> git रीसेट - मूल / मास्टर> git ऐड। > git कमिट-मी "यह एक नई प्रतिबद्धता है, जिसके लिए मैंने मूल रूप से एक संशोधन करने की योजना बनाई है"> git पुश ओरिजिन मास्टर ने यहां सुझाव दिया है stackoverflow.com/questions/18588974/ ... btw आपका उत्तर मददगार लगता है
lezzy

3
मेरे लिए, मुझे सिर्फ "गिट कमिट" चलाने की जरूरत थी। :(
टायलर

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

2
वास्तव में सुपर .. नीचे कमांड मेरे लिए काम किया ... जीआईटी रीसेट - मूल उत्पत्ति / मास्टर गिट ऐड। git प्रतिबद्ध -m "यह एक नई प्रतिबद्धता है जिसके लिए मैंने मूल रूप से संशोधन करने की योजना बनाई है" git पुश ओरिजिनल मास्टर धन्यवाद @VonC
हरि नारायणन

1
धन्यवाद यह काम करता है! मैं इस समाधान के लिए घंटों की तलाश में था!
रेडियन Xhepa

96

क्या किसी ने कोशिश की:

git push -f origin master

इससे समस्या का समाधान होना चाहिए।

संपादित करें: नीचे @Mehdi की टिप्पणी के आधार पर मुझे कुछ के बारे में स्पष्ट करने की आवश्यकता है —force pushing। ऊपर दिया गया git कमांड केवल पहले कमिट के लिए सुरक्षित रूप से काम करता है। यदि पहले से ही कमिट थे, तो पहले से अनुरोध या शाखाएं खींचें, यह सभी को रीसेट करता है और इसे शून्य से सेट करता है। यदि हां, तो कृपया बेहतर समाधान के लिए @VonC के विस्तृत उत्तर को देखें।


25
काम करता है लेकिन बुरा है, कृपया इसका उपयोग न करें जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं। (शायद आप नहीं जानते कि आप एसओ में देख रहे हैं तो आप क्या कर रहे हैं)
मेहदी

3
यदि आप कोशिश करने जा रहे हैं -f/ --forceयह हमेशा के --force-with-leaseबजाय उपयोग करने के लिए सुरक्षित है , जो नीचे की ओर परिवर्तन है कि धक्का द्वारा बंद हो जाएगा अगर गर्भपात होगा। --force-with-leaseरोजमर्रा की रिबासिंग की बहुत सारी स्थितियों के लिए आवश्यक है, लेकिन --forceलगभग कभी भी ज़रूरत नहीं होनी चाहिए।
जोशुआ गोल्डबर्ग

63

यदि आपने अभी उपयोग किया है git initऔर अपनी फ़ाइलों को git add .या कुछ समान के साथ जोड़ा है और अपनी दूरस्थ शाखा को जोड़ा है, तो हो सकता है कि आपने अभी git commit -m 'commit message'तक दूरस्थ रूप से पुश करने के लिए स्थानीय रूप से कुछ भी नहीं किया हो ... मुझे बस यह त्रुटि हुई थी और वह थी मेरी मुद्दा।


1
बस इस में भाग गया। Git ऐड के दौरान कमिट कमांड काम नहीं करती थी। अच्छा निर्णय। धन्यवाद
jgritten

1
धन्यवाद दोस्त! बस। मुझे लगा कि मैंने अपने बदलाव किए हैं। अब git push -u original master ठीक काम करता है।
11

36

मुझे भी यही समस्या थी। मुझे यह समस्या हो रही थी क्योंकि मैंने कोई भी कमिट नहीं किया था, जो कि शुरुआती कमिटमेंट भी नहीं था और फिर भी मैं पुश करने की कोशिश कर रहा था।

एक बार मैंने किया git commit -m "your msg"और फिर सबकुछ ठीक हो गया।


8
यह बहुत मतलब नहीं है। मूल सवाल स्थानीय गिट के पीछे होने के बारे में है । किसी भी तरह से "पीछे रहने" को मेरी स्थानीय प्रतिबद्ध बनाने का समाधान नहीं किया जा सकता है!
भूतकाल

ओह मैं भी कमिट करना भूल गया: पी
शम्स नाहिद

यह भी संभव है कि यह आपको एक खाली प्रतिबद्ध के साथ धक्का देने की अनुमति नहीं देगा
mboy

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

1
यह मेरे लिए लागू होता है क्योंकि मुझे वह सटीक त्रुटि संदेश मिल रहा था और इस समाधान ने मेरी समस्या को ठीक कर दिया।
डिएगो फोर्ट्स

19

अपनी शाखा का नाम बदलें और फिर धक्का दें, जैसे:

git branch -m new-name
git push -u new-name

इसने मेरे लिए काम किया।


1
यह काम किया, लेकिन कृपया समझाएं कि हमें यह क्यों करना चाहिए
kanlukasz

वाह, यह वास्तव में काम किया, लेकिन क्यों? मेरे स्थानीय शाखा नाम में एक हाइफ़न था my-branch_wont_push:। एक बार जब मैंने इसका नाम बदल दिया my_branch_wont_push, तो git push -u origin my_branch_wont_pushमेरे लिए काम किया।
cdabel

13

मैं इस समस्या का समाधान जीथब मदद में ढूंढता हूं।

आप इसे देख सकते हैं: गैर-फास्ट-फ़ॉरवर्ड त्रुटियों से निपटना

इसे कहते हैं:

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

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

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

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

1
यह सामान्य प्रक्रिया है जब भी चीजें उम्मीद के मुताबिक काम कर रही होती हैं। यह कुछ भी मदद नहीं करता है जब git को लगता है कि यह पहले से ही अद्यतित है जैसा कि @rubyandcfish ने पूछा था।
टिम

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (वर्तमान भंडार की जाँच के लिए)

  4. git add -A(सभी फाइलें जोड़ें)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


कोड को आगे बढ़ाने से पहले आपको रिपॉजिटरी से खींचने की जरूरत है
जेम्स सिवा

आप बस git pull --rebase ओरिजिनल मास्टर
James Siva

6

मैंने एक ही समस्या का सामना किया था, नीचे दिए गए चरणों के साथ तय किया गया था।

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (उपरोक्त url https: //User_name@bitbucket.org/User_name/sample.git आपकी बिट बाल्टी प्रोजेक्ट url को संदर्भित करता है)

  5. git push -u origin master

संकेत

जाँच करें कि क्या आपका git हब खाता आपके स्थानीय git के साथ लिंक का उपयोग करके है:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

यदि आप gerrit का उपयोग कर रहे हैं, तो यह एक अनुचित Change-id के कारण हो सकता है। चेंज-आईडी को हटाने का प्रयास करें और देखें कि क्या होता है।


4

गिथब रेपो को आगे बढ़ाने से पहले अपने बदलावों को याद रखें। इससे आपकी समस्या ठीक हो सकती है।


4

धक्का देने से पहले शुरुआती बदलावों का न आना भी समस्या का कारण बनता है



3
git push origin {your_local_branch}:{your_remote_branch}

यदि आपकी स्थानीय शाखा और दूरस्थ शाखा एक ही नाम साझा करते हैं, तो क्या आप अपने स्थानीय शाखा के नाम को छोड़ सकते हैं, बस उपयोग करें git push {your_remote_branch}। अन्यथा यह इस त्रुटि को फेंक देगा।


3

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

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

यह तब हो सकता है जब आपके पास कोई फाइल न हो। पाठ फ़ाइल बनाने का प्रयास करें, फिर निम्नलिखित कमांड का पालन करें

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

मेरे लिए समस्या थी, मैंने कमिट से पहले फाइलें नहीं जोड़ीं।

git add .

git commit -m "your msg"


2

सबसे अच्छा उपयोग rm -rf .git/hooksऔर फिर कोशिश धक्का धक्का


दिलचस्प है, इसने मुझे एक ऐसे मामले में मदद की, जहां स्पष्ट रूप से उत्पत्ति पर कोई प्रतिबंध नहीं था (पुन: खंडन करने की आवश्यकता नहीं थी)।
पाविक

आप अपने सभी हुक टॉस क्यों करेंगे? शायद पहले एक बैकअप बनाते हैं?
MSpreij

2

मैंने GitHub में एक खाली रेपो बनाया, और स्थानीय रूप से मेरा कोड है। मुझे अब उसी मुद्दे का सामना करना पड़ा, जैसा कि मैंने नीचे दिए गए अनुक्रम का पालन किया,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

ISSUE WAS: मेरे पास मेरे पास मौजूद फ़ाइलों के मंचन से पहले करने की कोशिश की।

तो हम फ़ाइलें और कम समिति का उपयोग करने की जरूरत है।

यह सही क्रम है।

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

चूंकि मैं पहले गलत अनुक्रम को निष्पादित करता हूं, मैं बस नीचे दिए गए आदेशों को निष्पादित करता हूं

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

यकीन नहीं होता कि यह लागू होता है, लेकिन मेरे लिए यह तय था कि गिट इनिट के बाद स्थानीय स्तर पर कुछ किया जाए। फिर मैंने रिमोट का उपयोग करके धक्का दिया - परेशान-अपस्ट्रीम ...


1

मेरे लिए हल की गई नई शाखा बनाना:

git checkout -b <nameOfNewBranch>

जैसा कि अपेक्षित था कि पिछली शाखा को विलय करने की कोई आवश्यकता नहीं थी क्योंकि पूरी तरह से नए में समाहित थी।


1
मेरे पास यह मुद्दा बिल्कुल था, मैं फीचर 22 पर था और कर रहा था git push origin feature22-fix, लेकिन feature22-fixन तो स्थानीय और न ही रिमोट से बाहर निकला, इसलिए मुझे पहले शाखा को स्थानीय रूप से चेकआउट करना पड़ा, फिर धक्का दिया
हनी

1

यदि आप किसी मौजूदा GitHub रिपॉजिटरी के साथ डायरेक्टरी इनिशियलाइज़ करने का प्रयास कर रहे हैं, तो आपको यह सुनिश्चित करना चाहिए कि आप बदलाव कर रहे हैं।

फ़ाइल बनाने का प्रयास करें:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

यह प्रारंभिक नाम की एक फ़ाइल रखेगा जिसे आप बाद में हटा सकते हैं।

आशा है कि यह उत्तर मदद करता है! सौभाग्य!


1

आपको कुछ बल देने की आवश्यकता है

बस धक्का - बल करो।


1

मेरे मामले में, यह मेरा huskyपैकेज था जो धक्का को खारिज करता है।

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

इसे जबरदस्ती धकेलने के लिए, बस दौड़ें git push origin master --no-verify

मैं npm run prepushत्रुटि को डीबग करने के लिए दौड़ा , और यही कारण था:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

दौड़ो npm installऔर इसे कम करो, और समस्या तय हो गई है।




0

यदि उपरोक्त उत्तर में से कोई भी काम नहीं कर रहा है और यदि आपने ssh-addहाल ही में कुछ गड़बड़ की है । प्रयत्न

ssh-add -D

0

Sourcetree उपयोगकर्ताओं के लिए

पहले एक प्रारंभिक कमिट करें या सुनिश्चित करें कि आपके पास कोई अनक्मिटेड परिवर्तन नहीं है, फिर सॉरसेट्री के किनारे पर "REMOTES" है, उस पर राइट-क्लिक करें, और फिर 'पुश टू ओरिजिन' पर क्लिक करें। तुम वहाँ जाओ।


0

यह मेरे साथ होता है क्योंकि मेरे पास शाखा के समान एक टैग था और मैंने शाखा को रिमोट से धकेलने की कोशिश की।


0

मेरे मामले में समस्या यह थी कि (अजीब तरह से) कोई शाखा नहीं थी जिसे मास्टर कहा जाता था। मैंने गितुब से भंडार लिया।


0

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

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