इसका क्या मतलब है
आपका अपस्ट्रीम- जिस रिमोट को आप कहते हैं origin
, वह लंबे समय से है, या शायद कभी नहीं था (यह इस जानकारी से अकेले बताना असंभव है) नाम की एक शाखा feature/Sprint4/ABC-123-Branch
। उसके लिए एक विशेष रूप से सामान्य कारण है: किसी ने (शायद आपको याद नहीं होगा, या आपको याद होगा) उस अन्य गिट रिपॉजिटरी में शाखा को हटा दिया।
क्या करें
यह इस बात पर निर्भर करता है कि आप क्या चाहते हैं । नीचे चर्चा अनुभाग देखें। आप ऐसा कर सकते हैं:
- रिमोट पर शाखा बनाएं या फिर से बनाएं, या
- अपनी स्थानीय शाखा हटाएं, या
- कुछ और आप सोच सकते हैं।
विचार-विमर्श
आपको चलना चाहिए git pull
(यदि आप दौड़ रहे थे तो आपको git merge
एक अलग त्रुटि संदेश, या कोई त्रुटि संदेश नहीं मिलेगा)।
जब आप चलते हैं git fetch
, तो आपका Git आपके कॉन्फ़िगरेशन url
के [remote "origin"]
अनुभाग के तहत लाइन के आधार पर किसी अन्य Git से संपर्क करता है। वह Git एक कमांड ( upload-pack
) चलाता है, जो अन्य बातों के अलावा, आपके Git को सभी शाखाओं की सूची भेजता है । आप git ls-remote
यह देखने के लिए उपयोग कर सकते हैं कि यह कैसे काम करता है (यह प्रयास करें, यह शैक्षिक है)। यहाँ git
अपने लिए एक गिट रिपॉजिटरी में इसे चलाने पर मुझे जो कुछ भी मिलता है उसका एक स्निपेट है:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
refs/heads/
प्रविष्टियों शाखाओं कि रिमोट पर मौजूद सभी की सूची बनाना, 1 इसी के साथ प्रतिबद्ध आईडी (के लिए refs/tags/
प्रविष्टियों आईडी टैग लेकर जा सकते हैं प्रतिबद्ध बजाय वस्तुओं)।
आपका Git इनमें से प्रत्येक शाखा का नाम लेता है और उसी अनुभाग में लाइन (s) के अनुसार इसे बदलता है । इस मामले में, आपका Git उदाहरण के लिए, के साथ बदलता है । आपका Git हर शाखा के नाम के साथ ऐसा करता है जो सामने आता है।fetch
remote
refs/heads/master
refs/remotes/origin/master
यह विशेष फ़ाइल में मूल नाम भी दर्ज करता है FETCH_HEAD
(यदि आप अपनी .git
निर्देशिका में देख रहे हैं तो आप इस फ़ाइल को देख सकते हैं )। यह फ़ाइल प्रचलित नामों और ID को सहेजती है।
git pull
आदेश एक सुविधा कम कटौती के रूप में होती है: इसे चलाता git fetch
दूरस्थ उचित पर, और उसके बाद git merge
(या, यदि हां, निर्देश दिए git rebase
) जो कुछ के साथ बहस मर्ज (या रिबेस) के लिए आवश्यक हैं के रूप में द्वारा निर्देशित [branch ...]
अनुभाग। इस स्थिति में, आपका [branch "feature/Sprint4/ABC-123-Branch"]
अनुभाग इससे प्राप्त करने के लिए कहता है origin
, फिर नाम के तहत जो भी ID मिली है, उसके साथ विलय करें refs/heads/feature/Sprint4/ABC-123-Branch
।
चूँकि उस नाम के तहत कुछ भी नहीं मिला था, git pull
शिकायत और रोक।
यदि आप इसे दो अलग-अलग चरणों के रूप में चलाते हैं, git fetch
और फिर git merge
(या git rebase
), तो आपका गिट आपकी कैश्ड remotes/origin/
रिमोट-ट्रैकिंग शाखाओं को देखेगा कि किसके साथ विलय करना है या किस पर पुनर्खरीद करना है। अगर वहाँ था एक समय में इस तरह के एक शाखा, आप अभी भी रिमोट ट्रैकिंग शाखा हो सकता है। इस स्थिति में आपको एक त्रुटि संदेश नहीं मिलेगा। यदि ऐसी कोई शाखा कभी नहीं थी, या यदि आप git fetch
साथ चले --prune
(जो मृत दूरस्थ-ट्रैकिंग शाखाएँ हटा दें), ताकि आपके पास कोई दूरवर्ती ट्रैकिंग शाखा न हो, तो आपको एक शिकायत मिलेगी, लेकिन यह origin/feature/Sprint4/ABC-123-Branch
इसके बजाय संदर्भित होगी ।
किसी भी स्थिति में , हम यह निष्कर्ष निकाल सकते हैं कि feature/Sprint4/ABC-123-Branch
अब नामित रिमोट पर मौजूद नहीं है origin
।
यह संभवतः एक समय में मौजूद था, और आपने संभवतः रिमोट-ट्रैकिंग शाखा से अपनी स्थानीय शाखा बनाई थी। यदि हां, तो आपके पास शायद अभी भी रिमोट-ट्रैकिंग शाखा है। आप यह देखने के लिए जाँच कर सकते हैं कि किसने शाखा को रिमोट से हटाया है, और क्यों, या आप इसे फिर से बनाने या अपनी दूरस्थ-ट्रैकिंग शाखा और / या अपनी स्थानीय शाखा को हटाने के लिए कुछ धक्का दे सकते हैं।
1 अच्छा, यह सब वह कम से कम स्वीकार करने वाला है। लेकिन जब तक कि वे विशेष रूप से कुछ रेफरी को छिपाते हैं, सूची में सब कुछ शामिल है।