git में लाने से सभी शाखाएँ नहीं मिलतीं


204

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

सही कार्रवाई लगती है

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

इस बिंदु पर एक समस्या है, किसी कारण के बाद git fetchमैं देव-जीएमएल दूरस्थ शाखा नहीं देख सकता। क्यों नहीं? यदि मैं भंडार को नए सिरे से क्लोन करता हूं, तो यह वहां है, इसलिए निश्चित रूप से दूरस्थ शाखा मौजूद है:

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

मैं कोशिश की है git update, git pull, git fetch --all, git pretty-pleaseसभी संभव क्रमपरिवर्तन में ...


45
क्या git config --get remote.origin.fetchउत्पादन करता है ? यदि यह नहीं है +refs/heads/*:refs/remotes/origin/*, तो यह संभवतः होना चाहिए।
torek

हाँ यह वही है जो यह पैदा करता है
एडवर्ड नेवेल

3
बिल्कुल वही समस्या, लेकिन ऊपर की टिप्पणी ने इसे हल कर दिया! मैं था +refs/heads/master:refs/remotes/origin/masterके साथ masterके बजाय*
मिरको

1
मेरे लिए एक ही समस्या है, लेकिन इस पृष्ठ पर कोई भी सुझाव इसे हल नहीं करता है। अजीब।
मैग्नस

1
@ thoni56: हाँ, यह उथले क्लोन के कारण संभव है।
Tr17n Viầt Hoàng

जवाबों:


388

remote.origin.fetchसेटिंग की जाँच करते समय समस्या को देखा जा सकता है
(जिन पंक्तियों के साथ शुरुआत होती है $वे मेरे द्वारा लिखी गई कमांड के साथ संकेत हैं। अन्य लाइनें परिणामी आउटपुट हैं)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

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

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

वाइल्डकार्ड *बेशक उस रास्ते के तहत सब कुछ है।

दुर्भाग्य से मैंने यह टिप्पणी तब देखी जब मैं पहले ही खोद चुका था और मुझे परीक्षण और त्रुटि का उत्तर मिला।


2
यह संभवतः स्वीकृत उत्तर होना चाहिए, क्योंकि यह वास्तव में मूल पोस्ट में समस्या को हल करता है।
लोकलपीसीग्युय

1
सिर्फ एक तरफ ध्यान दें, मुझे --replace-allमेरे लिए कॉन्फ़िगरेशन पर सभी मानों को बदलने के लिए पैरामीटर जोड़ना थाremote.origin.fetch
Garis M Suero

4
ध्यान दें कि यह तब हो सकता है जब आपने अपनी रिपॉजिटरी को केवल एक ही शाखा के साथ क्लोन किया हो, उदाहरण के लिएgit clone <url> --branch <branch> --single-branch [<folder>]
Narretz

2
स्टक्स के जवाब की जांच करें
न्यूबी

5
यह तब हो सकता है जब आप क्लोन करते हैंgit clone ... --depth 1
अनातोली बीवोल

108

मैं इस मुद्दे पर आज एक रेपो पर था।

यह +refs/heads/*:refs/remotes/origin/*शीर्ष समाधान के अनुसार मुद्दा नहीं था ।

लक्षण बस यह था कि git fetch originया git fetchसिर्फ कुछ भी करने के लिए प्रकट नहीं हुआ था, हालांकि दूरस्थ शाखाओं को लाने के लिए थे।

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

के साथ निकालें: git remote rm origin

और इसके साथ फिर से बनाएँ: git remote add origin <git uri>


14
मैं के लिए सही Git config था remote.origin.fetchयानी +refs/heads/*:refs/remotes/origin/*। उपरोक्त समाधान से मुझे मदद मिली।
न्यूबी

9
यह समाधान मेरे लिए भी सही था। यह दुर्भाग्यपूर्ण है क्योंकि यह इंगित करता है कि संभावित रूप से गिट में एक बग है।
रॉबर्ट ओस्लर

2
इससे मेरी समस्या भी हल हो गई। मैं भी git संस्करण 2.19.1v के साथ एक मशीन पर इस मुद्दे को दिखाई देता है, लेकिन इसे git संस्करण 2.17.1 के साथ किसी अन्य मशीन पर अनुभव नहीं किया
jerpint

6
git remote update originमेरे लिए काम किया। मुझे लगता है कि कुछ ताज़ा करने की ज़रूरत है?
फेलिप जेरार्ड

2
git remote update originमेरे लिए काम नहीं किया, लेकिन रिमोट को हटाने और जोड़ने का काम किया।
अनातोली किग्युटुक

59

रिमोट अपडेट

आपको दौड़ने की जरूरत है

git remote update

या

git remote update <remote> 

फिर आप git branch -rदूरस्थ शाखाओं को सूचीबद्ध करने के लिए चला सकते हैं ।

एक नई शाखा की जाँच करें

स्थानीय शाखा के रूप में एक (नई) दूरस्थ शाखा को ट्रैक करने के लिए:

git checkout -b <local branch> <remote>/<remote branch>

या (कभी-कभी यह अतिरिक्त के बिना काम नहीं करता है remotes/):

git checkout -b <local branch> remotes/<remote>/<remote branch>

मददगार गिट चीटशीट


5
लेकिन मेरी समस्या यह है कि मैं एक मौजूदा दूरस्थ शाखा की जांच नहीं कर सकता , क्योंकि मेरे ग्राहक को यह मौजूद नहीं है। मेरा सवाल देखिए। ध्यान दें कि जब मैं git fetchइसके पीछे चलता हूं तो git branch -aयह सभी शाखाओं को नहीं दिखाता है। मुझे dev-gmlएक सहयोगी द्वारा की गई शाखा को देखने के लिए अपनी कार्यशील निर्देशिका और पुन: क्लोन को हटाना पड़ा । इस बार काम किया, लेकिन हम अक्सर शाखा में रहेंगे!
एडवर्ड नेवेल

अरे @EdwardNewell, जवाब के लिए धन्यवाद, बस आपको बताने के लिए, आपका लिंक ch.errtheblog.com/s/git मेरे लिए मर चुका है ...
Kjellski

मुझे यह प्रश्न पूछे हुए बहुत समय हो चुका है, और मैं सिर्फ इसलिए पिंग हो गया क्योंकि किसी ने नया पोस्ट किया था। मैं इस उत्तर को स्वीकार कर रहा हूं, भले ही मूल रूप से मेरे लिए वास्तव में कुछ भी काम नहीं किया गया हो। कारण जो मैंने अंत में इस सही को चिह्नित किया है, क्योंकि मुझे संदेह है कि उसने जो लिखा है वह Edit:बहुत अच्छी तरह से काम कर सकता है। अगर मैं अभी भी समस्या का सामना कर रहा हूं तो यह मैं कोशिश करूंगा। HTH
एडवर्ड नेवेल

रिकॉर्ड के लिए, बिट ने मुझे यहां मदद की है git remote update origin। जिससे लापता शाखा के माध्यम से दिखाई दे रहा है git branch -l -r। (मैंने देखा git config --get remote.origin.fetchऔर आउटपुट +refs/heads/*:refs/remotes/origin/*उम्मीद के मुताबिक था ।)
रॉबर्ट डोडिएर

9

इसे टर्मिनल से लिखें

git fetch --prune.

यह बढ़िया काम करता है।


1
धन्यवाद! मैंने कई चीजों की कोशिश की और सोचा कि मैं इसे एक शॉट दूँगा ... अब देखने के लिए कि मैंने वास्तव में क्या किया ...
MadTurki

यह क्या करता है?
एडम

यह सभी उपलब्ध शाखाओं को लेता है। सिर को देखो।
समेट SamZTOPRAK

4

इसे और अधिक विशिष्ट बनाने के लिए एक ट्रैकिंग शाखा बनाएँ, जिसका अर्थ है कि आप अब एक दूरस्थ शाखा पर नज़र रख रहे हैं।

git branch --track branch remote-branch
git branch --track exp remotes/origin/experimental

जिसके बाद आप कर सकते हैं

git branch   # to see the remote tracking branch "exp" created .

फिर उस ब्रांच पर काम करना है

git checkout branchname
git checkout exp

आपके द्वारा शाखा में परिवर्तन किए जाने के बाद। आप अपने परिवर्तन को मर्ज करने के लिए अपनी दूरस्थ ट्रैकिंग शाखा के साथ भ्रूण और गिट मर्ज कर सकते हैं और नीचे के रूप में दूरस्थ शाखा को धक्का दे सकते हैं।

git fetch origin
git merge origin/experimental  
git push origin/experimental

आशा है कि यह मदद करता है और आपको एक विचार देता है, यह कैसे काम करता है।


1

मुझे एक समान समस्या थी, हालांकि मेरे मामले में मैं दूरस्थ शाखा को खींच / धक्का दे सकता git statusथा, लेकिन स्थानीय शाखा राज्य को दूरस्थ लोगों को नहीं दिखा सकता था।

इसके अलावा, मेरे मामले git config --get remote.origin.fetchमें कुछ भी वापस नहीं किया

समस्या यह है कि .git/configसंबंधित दूरस्थ ब्लॉक की फ़ेच लाइन में फ़ाइल में एक टाइपो था । संभवत: मैंने पहले गलती से कुछ जोड़ा है (कभी-कभी मैं सीधे इस फाइल को देखता हूं, या इसे संपादित भी करता हूं)

इसलिए, जांचें कि क्या .git/configफ़ाइल में आपकी दूरस्थ प्रविष्टि सही है, उदाहरण के लिए:

[remote "origin"]
    url = https://[server]/[user or organization]/[repo].git
    fetch = +refs/heads/*:refs/remotes/origin/*

0

यह एक चेहरे के ताड़ के क्षण के कारण हो सकता है: यदि आप कई क्लोनों के बीच स्विच करते हैं तो एक गैर-मौजूद शाखा को खींचने की कोशिश कर रहे गलत स्रोत पेड़ में खुद को खोजना आसान है। जब क्लोन में समान नाम होते हैं, तो यह आसान होता है, या रिपॉज प्रत्येक एकाधिक योगदानकर्ताओं में से एक ही प्रोजेक्ट के लिए अलग-अलग क्लोन होते हैं। एक नया git क्लोन स्पष्ट रूप से उस "समस्या" को हल करता प्रतीत होगा जब वास्तविक समस्या फोकस या कार्य प्रसंग या दोनों को खो रही हो।


0

मुझे अपने GitExtensions के रिमोट रिपोजिटरी में जाना पड़ा क्योंकि यहाँ कुछ भी काम नहीं कर रहा था। वहाँ मैंने देखा कि 2 शाखाओं में दूरस्थ रिपॉजिटरी कॉन्फ़िगर नहीं थी। समायोजित करने के बाद यह निम्नानुसार दिखता हैयहां छवि विवरण दर्ज करें

सूचना शाखा noExternal3अभी भी एक दूरस्थ भंडार नहीं होने के रूप में दिखाती है। निश्चित नहीं है कि बैश कमांडो का कॉम्बो क्या पाया या समायोजित करेगा।


0

आज वही समस्या थी जो मेरे रेपो को स्क्रैच से सेट कर रही थी। मैंने सब कुछ करने की कोशिश की, मूल को हटाने और इसे फिर से वापस जोड़ने के अलावा कुछ भी काम नहीं किया।

git remote rm origin
git remote add origin git@github.com:web3coach/the-blockchain-bar-newsletter-edition.git

git fetch --all
// Ta daaa all branches fetched

-1

हमें भी यही समस्या थी और आपको इसका इस्तेमाल करना होगा

git fetch

git push origin branch_name

git branch -r

आशा है कि इस समस्या का सामना करने वाले किसी व्यक्ति की मदद करेंगे

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