आपकी शाखा 3 कमिट द्वारा 'मूल / मास्टर' से आगे है


354

दौड़ते समय मुझे निम्नलिखित मिल रहे हैं git status

Your branch is ahead of 'origin/master' by 3 commits.

मैंने कुछ अन्य पोस्ट पर पढ़ा है कि इसे ठीक करने का तरीका रन है git pull --rebaseलेकिन वास्तव में रिबास क्या है, क्या मैं डेटा खो दूंगा या क्या यह मास्टर के साथ सिंक करने का सरल तरीका है?


18
मुझे नहीं लगता कि यह कोई डुप्लिकेट है ... यह सवाल पूछ रहा है कि इसका क्या मतलब है, जबकि दूसरा सवाल यह है कि परिवर्तनों को कैसे छोड़ना है।
onionjake

11
इतने लोगों द्वारा इसे डुप्लिकेट के रूप में कैसे चिह्नित किया गया था? प्रश्न स्पष्ट रूप से इंगित करता है कि व्यक्ति अपने परिवर्तनों को ढीला नहीं करना चाहता है। उन्होंने परिवर्तन किए हैं और संदेश से भ्रमित हैं। तथाकथित डुप्लिकेट प्रश्न व्यक्ति को उनके परिवर्तनों को ढीला कर देगा।
डेरेक ग्रीर

4
मुझे यह कहना है कि ऊपर से जुड़ा हुआ प्रश्न वास्तव में इस प्रश्न का डुप्लिकेट नहीं है ...
डेव कंटर

15
@ डेरेकग्रेयर: यह कैसे एक डुप्लिकेट के रूप में चिह्नित किया गया था? क्योंकि डुप्लिकेट के रूप में प्रश्नों को चिह्नित करने वाले अधिकांश लोग वास्तव में प्रश्न को पढ़ने और समझने के लिए परेशान नहीं होते हैं । यदि सतही समानताएं हैं, तो वे इस निष्कर्ष पर पहुंचेंगे कि दोनों समान हैं, और यह ओपी या अन्य लोगों के ऊपर होगा, जो ध्यान से दोहराने के लिए समय लेने को तैयार हैं कि पहली जगह में क्या स्पष्ट होना चाहिए था, यदि डुप्टी-शिकारी वास्तव में ध्यान देने के लिए ध्यान रखते थे।
इकोनॉस्टल

6
^ ^ ^ का अभ्यास एसओ, आईएमओ को मार रहा है।
गीक स्टॉक

जवाबों:


766

आपको वह संदेश मिलता है क्योंकि आपने अपने स्थानीय मास्टर में परिवर्तन किए थे और आपने उन्हें दूरस्थ तक नहीं पहुंचाया था। आपके पास इसे "हल" करने के कई तरीके हैं और यह सामान्य रूप से इस बात पर निर्भर करता है कि आपका वर्कफ़्लो कैसा दिखता है:

  • एक अच्छे वर्कफ़्लो में आपके मास्टर की रिमोट कॉपी अच्छी होनी चाहिए, जबकि मास्टर की आपकी स्थानीय कॉपी रिमोट की एक कॉपी है। इस वर्कफ़्लो का उपयोग करके आपको यह संदेश फिर कभी नहीं मिलेगा।
  • यदि आप दूसरे तरीके से काम करते हैं और आपके स्थानीय बदलावों को आगे बढ़ाया जाना चाहिए तो बस git push originमूल को अपना रिमोट मान लेना चाहिए
  • यदि आपके स्थानीय परिवर्तन खराब हैं, तो बस उन्हें हटा दें या रिमोट पर अपने स्थानीय मास्टर को रीसेट करें git reset --hard origin/master

82
जीआईटी रीसेट - भार उत्पत्ति / मास्टर वास्तव में वही है जिसकी मुझे तलाश थी। धन्यवाद।
फ्लक्सएजीन

4
@iberbeu आपने मेरा दिन हल कर दिया ... git reset --hard origin / master वो है जिसकी मुझे तलाश है। + 1ed
रवि

75
इसके अलावा fwiw git diff master origin/master(यानी। git diff local remote) बदलाव देखने के लिए
Shanimal

1
मेरे पास दूरस्थ मूल / शाखा पर स्थानीय / मास्टर हैं, इसलिए इसका उपयोग करके git push origin master:branchलौटा Everything up-to-date, उसके बाद एक्स कमिट्स द्वारा आगे होने का संदेश चला गया।
फायरी

2
पिछले एक मुझे मिल गया कि मुझे वहाँ क्या चाहिए!
रयानजी

38

ठीक करने के लिए कुछ भी नहीं है। आपने बस 3 कमिट किए हैं और उन्हें अभी तक रिमोट ब्रांच में नहीं भेजा है। कई विकल्प हैं, जो आप करना चाहते हैं उसके आधार पर:

  • git push: अपने परिवर्तनों को रिमोट पर ले जाएं (यदि रिमोट पर पहले से ही अन्य परिवर्तन हैं तो यह अस्वीकृत हो सकता है)
  • कुछ न करें और कोडिंग रखें, दूसरे दिन सिंक करें
  • git pull: रिमोट से परिवर्तन (यदि कोई हो) प्राप्त करें और उन्हें अपने परिवर्तनों में मर्ज करें
  • git pull --rebase: ऊपर के रूप में, लेकिन दूरस्थ परिवर्तनों के शीर्ष पर अपने कमिट को फिर से करने का प्रयास करें

आप एक शास्त्रीय स्थिति में हैं (हालांकि आमतौर पर आप अधिकांश वर्कफ़्लोज़ में मास्टर पर बहुत कुछ नहीं करेंगे)। यहाँ मैं सामान्य रूप से क्या करूँगा: मेरे परिवर्तनों की समीक्षा करें। हो सकता है कि git rebase --interactiveउन पर कुछ कॉस्मेटिक्स करने के लिए, जो चूसते हैं उन्हें गिरा दें, उन्हें और अधिक तार्किक बनाने के लिए उन्हें पुनः व्यवस्थित करें। अब उन्हें दूरस्थ के साथ स्थानांतरित करें git push। यदि यह अस्वीकार हो जाता है क्योंकि मेरी स्थानीय शाखा अद्यतित नहीं है: git pull --rebaseसबसे हाल के परिवर्तनों और git pushबार - बार मेरे काम को फिर से करने के लिए।


मैंने git pull --rebase का इस्तेमाल किया, लेकिन अब यह कहता है कि मैं एक कमिट से आगे हूं
FluxEngine

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

@MartyMcFly यह देखना मुश्किल है कि यहां क्या हो रहा है। आप कहते हैं कि आप पहले से ही धक्का दिया? तो क्यों आप अभी भी मानते हैं कि मास्टर पर नहीं हैं? आपका क्या मतलब है your team lead merged to master? क्या तुमने नहीं कहा कि तुम पहले से ही मास्टर करने के लिए धक्का दिया अतिरिक्त प्रतिबद्ध में क्या है? git diff origin/masterयह देखने का प्रयास करें कि आपकी स्थानीय शाखा रिमोट से कैसे भिन्न है।
पीटीआर

1
मदद के लिए धन्यवाद, माफ करना अगर मैंने एक खराब काम किया स्थिति को समझा। लेकिन मैं जो देख रहा था वह git reset --hard origin / master है। लेकिन आपका उत्तर सहायक था +1।
फ्लक्सएजीन

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

36

इन 4 सरल आदेशों का उपयोग करें

चरण 1 :git checkout <branch_name>

यह उस शाखा में जाना स्पष्ट है।

चरण 2 :git pull -s recursive -X theirs

रिमोट शाखा परिवर्तन ले लो और उनके परिवर्तन के साथ अगर संघर्ष पैदा होता है। यदि आप ऐसा करते हैं, तो git statusआपको कुछ ऐसा मिलेगा कि आपकी शाखा 3 मूलों से 'मूल / मास्टर' से आगे है।

चरण 3 :git reset --hard origin/<branch_name>

चरण 4 :git fetch

अपनी शाखा को रीसेट करें।

का आनंद लें।


17

बिटबकैट पर एक पुल अनुरोध को मर्ज करने के बाद इस मुद्दे पर आया।

करना पड़ा

git fetch

और वह यह था।


2
मैं एक बंडल से रेपो के साथ काम कर रहा था और एक मौजूदा बंडल में "गिट भ्रूण" को लागू करके संदेश से छुटकारा पाने में सक्षम था। tnx!
मार्टिन मेसेर

केवल पढ़ने के लिए मेरे git स्टेटस में दिखाया गया था कि मैं 2 कमिट्स आगे था, लॉग को इस तरह देखा जाना चाहिए - सभी मूल में स्थित हैं। मैंने एक पुट खींचा और आगे 5 कमिट था। बस स्थानीय इंडेक्स को ताज़ा करने के लिए लाने की जरूरत है ... सभी अच्छे :)
क्रिस रुतलेज

12

आमतौर पर अगर मुझे यह जांचना है कि मेरे द्वारा किए गए स्वामी से अलग कौन से कमिट हैं:

git rebase -i origin/master

इस तरह मैं कमिट्स को देख सकता हूं और इसे छोड़ने या लेने का फैसला कर सकता हूं ...


यह नीचे सभी तरह से जवाब देता है कि मुझे क्या करना चाहिए था। मैं यह पता नहीं लगा सका कि अंतर का पता कैसे लगाया जाए, और मेरे सभी विभिन्न git diff ...मैगिक्स काम नहीं करेंगे। जब मैंने ऐसा किया, तो इसने मुझे noopएकमात्र प्रतिबद्ध के रूप में दिया , और जब मैंने इसे स्वीकार किया, तो अब मेरी शाखा मूल / मास्टर के साथ सिंक में है। तो यह प्रतीत होता है कि मूल से भिन्न होता है / मास्टर प्रभाव में थे कुछ भी नहीं।
फिलो विवरो

11

इस संदेश का gitअर्थ है कि आपने अपने स्थानीय रेपो में तीन कमिट किए हैं, और उन्हें masterरिपॉजिटरी में प्रकाशित नहीं किया है। उसके लिए दौड़ने की आज्ञा है git push {local branch name} {remote branch name}

आदेश git pullgit pull --rebaseजब आप अपने स्थानीय रेपो में नहीं होते हैं तो रिमोट रेपो पर प्रतिबद्ध होने के लिए (और ) दूसरी स्थिति के लिए है। --rebaseविकल्प का मतलब है कि gitएक तरफ प्रतिबद्ध अपने स्थानीय चले जाएँगे, दूरस्थ रेपो के साथ सिंक्रनाइज़ है, और फिर लागू करने का प्रयास अपने तीन नए राज्य से करते हैं। यह विफल हो सकता है यदि कोई संघर्ष है, लेकिन फिर आपको उन्हें हल करने के लिए प्रेरित किया जाएगा। rebaseयदि आप उपयोग करके संघर्षों को हल करना नहीं जानते हैं , तो आप गर्भपात भी कर सकते हैं git rebase --abortऔर दौड़ने से पहले वापस राज्य में पहुंच जाएंगे git pull --rebase


7

अगर आपका यह कहना है कि आप आगे हैं, तो बस पहले,

git पुश ओरिजिन

यह सुनिश्चित करने के लिए कि आपने रे में सभी उर नवीनतम काम को आगे बढ़ाया है

फिर,

git रीसेट - भार उत्पत्ति / गुरु

रेपो के साथ रीसेट और मिलान करने के लिए


4

बिटबकैट पर पुल अनुरोध को मर्ज करने के बाद एक बार मेरे साथ ऐसा हुआ।

मुझे बस करना था:

git fetch

मेरी समस्या हल हो गई। आशा है कि ये आपकी मदद करेगा!!!


0
$ git fetch

  - remote: Enumerating objects: 3, done.
  - remote: Counting objects: 100% (3/3), done.
  - remote: Compressing objects: 100% (3/3), done.
  - remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0


$ git pull 

   - Already up to date!
   - Merge made by the 'recursive' strategy.

आखिरकार:

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