git: अद्यतनों को अस्वीकार कर दिया गया क्योंकि दूरस्थ में वह कार्य होता है जो आपके पास स्थानीय रूप से नहीं होता है


113

मैं BitBucket पर git का उपयोग करते हुए कुछ डेवलपर्स के साथ एक टीम पर काम कर रहा हूं। हम सभी एक devशाखा पर काम कर रहे हैं , masterएक रिलीज तक जोर नहीं दे रहे हैं ।

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

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

मैं निर्देशों का पालन करता हूं और pull, लेकिन फिर मुझे एक मर्ज संघर्ष प्राप्त होता है। मर्ज संघर्ष के लिए एक संदेश दर्ज करने के बाद, मेरा स्थानीय कोड अब गलत कोड है जिसे अन्य डेवलपर ने दुर्घटना से अपलोड किया है (जैसा कि अपेक्षित है pull)। इसलिए मैं गलत कोड को बैकअप करने से पहले कॉपी करता हूं जिसे मैंने शुरू करने से पहले कॉपी किया था, और जब मैं फिर से पुश करने की कोशिश करता हूं, तो मुझे वही त्रुटि मिलती है।

यह वास्तव में निराशाजनक है, मैं वास्तव में अपनी टीम की मदद करना चाहता हूं और योगदान करना चाहता हूं, लेकिन इस त्रुटि के कारण मैं नहीं कर सकता। किसी को भी इस मुद्दे को हल करने के लिए कैसे पता है? मैं किसी भी मदद की बहुत सराहना करूंगा।

ये आदेश हैं जो मैं प्रतिबद्ध करने के लिए चलाता हूं, अगर यह किसी को भी मदद करता है:

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

मैंने सोचा होगा कि अगर मैंने यह आदेश रखा, तो मुझे मर्ज टकराव नहीं मिलेगा। शायद कि मुझसे गलती हुई थी। एक बार फिर धन्यवाद

अद्यतन: मैं जोड़ने चाहिए कि मैं गूगल और stackoverflow पर कुछ घंटों के लिए ध्यान दिया है, और उसके बाद अलग निर्देश, लेकिन मैं अभी भी नहीं कर सकते pushकरने के लिए devशाखा।

जवाबों:


42

git pull <remote> master:devलायेगा remote/masterशाखा और अपने में विलय local/devशाखा।

git pull <remote> dev लाएगा remote/dev शाखा, और अपने वर्तमान शाखा में विलय।

मुझे लगता है कि आपने कहा कि विवादित प्रतिबद्धता जारी है remote/dev , इसलिए वह शाखा है जिसे आप लाने और मर्ज करने का इरादा रखते हैं।

उस स्थिति में, आप वास्तव में संघर्ष को अपनी स्थानीय शाखा में विलय नहीं कर रहे थे, जो कि अजीब बात है क्योंकि आपने कहा था कि आपने अपनी कॉपी में गलत कोड देखा है। आप जांचना चाहते हैं कि क्या चल रहा है remote/master


1
वाह ... मुझे तो कभी पता ही नहीं चला। लेकिन यह अब बहुत मायने रखता है। मास्टर शाखा भी गलत थी, इसलिए आपका उत्तर मेरे पूरे प्रश्न को स्पष्ट करता है। मैं अब भी थोड़ा नया हूँ। मुझे उन दोनों के बीच अंतर बताने के लिए बहुत बहुत धन्यवाद!
डेलोस

6
मेरे लिए सबसे अच्छा विकल्प था git pull --rebase
derekmx271

152

टर्मिनल में इस कमांड का उपयोग करें

git पुश -f मूल गुरु


49
बल पुश (-f) ध्वज का उपयोग करना बहुत खतरनाक है और इसे कभी भी आपके नियमित कार्य प्रवाह का हिस्सा नहीं होना चाहिए
Spaideri

5
इस उत्तर में कुछ चेतावनी याद करने के बाद से मैं निराश हूँ।
मेलेबियस

2
ऊह! यह भंडार को फिर से लिखने के लिए मजबूर करता है।
अज़रा

3
मुझे गितुब के साथ एक ही त्रुटि थी और मैंने इसे इस आदेश के साथ तय किया, @theeastcoastwest आप क्यों कह रहे हैं कि यह खतरनाक है? आपका क्या कारण है "
सिमोन

3
@simon यह खतरनाक है क्योंकि यह रिमोट में काम को नजरअंदाज करता है और यह रेपो पर आपके बदलावों को बल देता है। इसलिए यदि आप अपनी टीम के काम को गड़बड़ाना नहीं चाहते हैं, तो जोर न लगाएं।
Gásten

42

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

git अपडेट को अस्वीकार करता है

जैसा कि हमने अपने स्थानीय वातावरण में अद्यतन रिमोट नहीं लिया है। तो पहले रिमोट से खींचो

git pull

यह आपकी स्थानीय रिपॉजिटरी को अपडेट करेगा और एक नई Readmeफाइल जोड़ेगा । फिर रिमोट में अपडेट किए गए परिवर्तन पुश करें

git push origin master

मैं git pull origin developअपने स्थानीय विकास शाखा में कर रहा था , लेकिन अब, बस git pullयह मेरे लिए ठीक काम करता है, मुझे पता नहीं क्यों।
एलेक्स

क्योंकि डिफ़ॉल्ट रूप से यदि आपकी स्थानीय शाखा को दूरस्थ शाखा के साथ सम्‍मिलित किया गया है और आपको उस शाखा में चेक आउट किया गया है तो आपको एक शाखा निर्दिष्ट करने की आवश्‍यकता नहीं git pullहै
हिमांशु

11

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

इसलिए रिमोट से पुल बनाएं

git pull origin master

फिर उस रिमोट में बदलाव को आगे बढ़ाएं

git push origin master


7

मैंने इसे ठीक किया, मुझे यकीन नहीं है कि मैंने क्या किया। मैंने केवल प्रयोग करके धक्का देने और खींचने की कोशिश की:

git pull <remote> dev के बजाय git pull <remote> master:dev

उम्मीद है कि यह किसी को मदद करता है अगर वे एक ही मुद्दा हो रहा है।


6

आपको इनपुट करने की आवश्यकता है:

$ git pull
$ git fetch 
$ git merge

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


5
आप उपयोग करना की आवश्यकता क्यों है git fetchऔर git mergeफिर से मैन्युअल रूप से चल रहा है के बाद git pullजो उन जिसमें ?
मेलेबियस

6

आप यह कोशिश कर सकते हैं: git pull origin master --rebase


2
हाय एडुआर्डो! इसने मेरे लिए काम किया। लेकिन क्या आप बता सकते हैं कि यह क्यों काम करता है? यह आदेश वास्तव में क्या करता है?
अक्षय नटराजन

4

वास्तव में जीथुब हमारे सोचने की तुलना में बहुत सरल है और जब भी हम धक्का देने की कोशिश करते हैं तो यह बिल्कुल होता है हम स्पष्ट रूप से हमारे गिट रिपॉजिटरी में कुछ फाइलें डालने के बाद भी , ताकि समस्या को ठीक करने की कोशिश की जा सके।

: गिट पुल

और फिर..

: गिट पुश

ध्यान दें: अगर आप गलती से अपने रिपॉजिटरी को खींचने के बाद vim एडिटर में फंस गए हैं, तो चिंता न करें कि सिर्फ vim एडिटर बंद करें और पुश करने की कोशिश करें :)


4

मैंने नीचे स्टेप्स किए हैं। अंत में यह ठीक काम कर रहा है।

कदम

1) गिट इनिट

2) git स्टेटस (स्टेटस चेक करने के लिए)

3) गिट जोड़। (सभी परिवर्तन फ़ाइल जोड़ें ()

4) गिट कमिट-एम "<pass your comment>"

5) git रिमोट एड मूल "<pass your project clone url>"

6) गिट पुल - क्लो-असंबद्ध-इतिहास "<pass your project clone url>" मास्टर

7) गिट पुश -यू "<pass your project clone url>"मास्टर


2

मेरे पास यह त्रुटि थी और यह इसलिए था क्योंकि सर्वर पर एक अपडेट था लेकिन SourceTree उपलब्ध कोई भी अपडेट नहीं दिखा रहा था (संभवतः क्योंकि मैं अंतिम बार चेक किया गया था तब मैं ऑफ़लाइन था)। इसलिए मैंने सोर्स ट्री में रिफ्रेश किया और अब यह 1 आइटम के बजाय 2 आइटम दिखाता है।

इसलिए यदि आपको यह त्रुटि मिलती है तो रिफ्रेश या पुल प्रेस करना सुनिश्चित करें और फिर प्रयास करें।


1

git खींच --rebase मूल गुरु

git पुश ओरिजिनल मास्टर


git पुश -f मूल गुरु

चेतावनी git पुश -f मूल गुरु

  • मौजूदा रिपोजिटरी पर बलपूर्वक धक्का देता है और पिछले रिपॉजिटरी को भी हटा देता है, तो यदि आपको पिछले संस्करणों की आवश्यकता नहीं है तो इससे अधिक उपयोगी हो सकता है

1

त्रुटि संभवतः कोड की भिन्न संरचना के कारण आती है जो आप कर रहे हैं और जो GitHub पर मौजूद है। आप इसका उल्लेख कर सकते हैं: " असंबंधित इतिहास को मर्ज करने से इनकार " से कैसे निपटें : त्रुटि

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

1

मेरे लिए सबसे अच्छा विकल्प है और यह काम करता है और सरल है

git pull --rebase

फिर

git push

शुभकामनाएँ


1

मैंने इस समस्या को हल किया है:

  1. git pull origin master
  2. git push origin master

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


0

मेरे पास पहले SSDT VS प्रोजेक्ट था। मैं प्रोजेक्ट को आगे बढ़ाना चाहता था क्योंकि मेरे पास यह गितुब के पास था। मैं चाहता था कि मास्टर शाखा शुरू करने के लिए मेरे रेपो के शुरुआती संस्करण को धक्का दिया जाए। यह पूरा करने का सबसे आसान तरीका था (मैं देखा) git पुश- ऑफ मूल मास्टर के डोनल का सुझाव । चूँकि मुझे कुछ भी दोबारा लिखने की चिंता नहीं थी, इसलिए यह समझ में आता था।


0

मुझे भी यही समस्या थी। ऐसा हुआ है कि मैंने बनाया है। सबसे पहले इसे खींचने के बिना रिपॉजिटरी पर फाइल करें।

आप हटाना चाह सकते हैं। रीडमी फ़ाइल या पुश करने से पहले खींच लें।


मुझे यकीन नहीं है कि एक 5 वर्ष पुराने प्रश्न का उत्तर किसी भी अतिरिक्त मूल्य प्रदान करता है, साथ ही यह ओपी की विशिष्ट समस्या का समाधान प्रदान नहीं करता है। चूंकि आप एक नए योगदानकर्ता हैं, कृपया प्रश्नों का उत्तर देने के लिए गाइड पर एक नज़र डालें: stackoverflow.com/help/how-to-answer
Sotiris Koukios-Panopoulos

0

आप उपयोग कर सकते हैं

git pull --rebase <your_reponame> <your_branch>

यह आपके स्थानीय रेपो पर अभी तक पंजीकृत नहीं किए गए कुछ परिवर्तनों को मिटाने में आपकी सहायता करेगा। ख़ास तौर परREADME.md

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