दूरस्थ शाखा "git शाखा -r" में दिखाई नहीं दे रही है


139

मैं एक दूरस्थ बिटबकेट रिपॉजिटरी पर जोर दे रहा हूं और हाल ही में एक सहयोगी ने उसी रिपॉजिटरी में बनाई गई एक नई शाखा को धक्का दिया है।

मैं उनके द्वारा अपलोड किए गए परिवर्तनों को लाने का प्रयास कर रहा हूं।

 $ git branch -a
 * master
 localbranch1
 localbranch2
 remotes/origin/master

$ git शाखा -r मूल / गुरु

Bitbucket के लिए वेब UI में मैं उसके द्वारा बनाई गई शाखा देख सकता हूं। मैं यह कैसे कर सकता हूँ?

अगला प्रयास:

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

यदि उसने जो शाखा बनाई है उसे new_branch_b कहा जाता है तो क्या मुझे निम्नलिखित देखने की उम्मीद करनी चाहिए?

$ git branch -r
origin/master
origin/new_branch_b

तीसरा प्रयास:

$ git remote update
Fetching bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

$ git branch -r
  origin/master

चौथा प्रयास:

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git

मैंने bitbucketमूल के बजाय रिमोट को बुलाया (कम से कम यही मुझे याद है; मैंने इसे कुछ समय पहले स्थापित किया था)

पांचवीं कोशिश:

मैंने kan के उत्तर के अनुसार Bitbucket दूरस्थ विन्यास को अद्यतन किया :

$ git config -e

[remote "bitbucket"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*

अधिकांश लोगों के लिए इसे मूल कहा जाएगा:

[remote "origin"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

बाद में,

$ git remote update

Fetching bitbucket
Password for 'https://user@bitbucket.org':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
 * [new branch]      branch_name1 -> origin/branch_name1
 * [new branch]      branch_name2    -> origin/branch_name2

.... और इसी तरह।

मुझे लगता है कि git fetch originयह भी काम करेगा git remote update


1
कूल, लेकिन शायद इसके refs/remotes/bitbucket/*बजाय उपयोग करने के लिए अधिक समझदारी थी refs/remotes/origin/*
कान

धन्यवाद, नामकरण स्थिरता के बारे में विधिवत उल्लेख किया। यह शायद बिटबकेट को मूल में बदलने के लिए और अधिक समझ में आता है! कन्वेंशन और वह सब :)
डरपोक

1
git fetch originकाम करता है
Dish

जवाबों:


107

remoteखंड भी निर्दिष्ट नियमों से लाएं। आप दूरस्थ से सभी शाखाओं को लाने के लिए इसमें कुछ ऐसा जोड़ सकते हैं:

fetch = +refs/heads/*:refs/remotes/origin/*

(या के originसाथ बदलें bitbucket।)

कृपया इसके बारे में यहां पढ़ें: 10.5 गिट इंटर्ल्स - द रिफस्पेक


3
इसने Git में चल रहे मेरे ब्रांचिंग मुद्दे को ठीक कर दिया जो मुझे हफ्तों से था। अचानक सभी git रिमोट अपडेट सामान वास्तव में काम करना शुरू कर दिया। धन्यवाद!
PålOliver

2
किसी कारण के लिए, यह fetch = +refs/heads/master:refs/remotes/origin/masterमेरे लिए : जैसा दिखता था। जगह masterके साथ *मेरी समस्या ठीक हो गई।
सेबेस्टियन ब्लास्क

2
यह बहुत उपयोगी है यदि आपने उथले क्लोन को एक अनहेल्लो में बदल दिया है।
तानाज़ित

@ क्या आप जानते हैं कि ऐसा कभी-कभी क्यों होता है? यह सिर्फ मेरे लिए होता है जब git cloneएक परियोजना। मुझे याद नहीं है कि मैंने अपने स्थानीय गिट के साथ कुछ खास किया है।
डॉटनेट कारपेंटर

@dotnetCarpenter यकीन नहीं होता ... अप्रत्याशित रूप से मेरे साथ कभी नहीं हुआ। क्या यह संभव है कि cloneबाधित किया गया और फिर से शुरू किया गया? या कुछ और ने रेपो को समवर्ती रूप से अर्जित किया है?
कान

218

यदि आपने अभी भी ऐसा नहीं किया है तो अपना रिमोट अपडेट करें:

$ git remote update
$ git branch -r

1
मैं विन पर GitHub क्लाइंट का उपयोग कर रहा हूं और कभी-कभी यह दूरस्थ शाखाओं को अपडेट नहीं करता है। पहली पंक्ति "गिट रिमोट अपडेट" एक आकर्षण की तरह काम करती है। आसान और साफ
स्टेफानो बोउरा

git remote updateUI में नई शाखा देखने के बाद । धन्यवाद
Tinkaal गोगोई

यह मदद नहीं की।
dKab

मुझे लगता है कि मैंने अलविदा को सफलतापूर्वक शाखा प्राप्त कर ली थी, लेकिन इसे सूचीबद्ध करने के लिए बस जरूरत थी git branch -r। पर git-scm.com/docs/git-branch यह "ऑप्शन -r का कारण बनता है रिमोट ट्रैकिंग शाखाओं सूचीबद्ध होने के लिए, और विकल्प -एक शो को स्थानीय और रिमोट शाखाओं" कहते हैं। git remote updateमें सूचीबद्ध सभी रिमोट की सभी शाखाओं को प्राप्त करता है git remote -v
रॉक ली

इसे चलाने के बाद मैं दौड़ने में सक्षम हो गया git checkout origin/masterऔर फिर उस git branch master; git checkout master
टूटे हुए

35

यदि आप --depthपैरामीटर के साथ क्लोन करते हैं, तो यह .git/configसभी शाखाओं को नहीं लाने के लिए सेट करता है , लेकिन केवल मास्टर।

आप बस पैरामीटर को छोड़ सकते हैं या कॉन्फ़िगरेशन फ़ाइल को अपडेट कर सकते हैं

fetch = +refs/heads/master:refs/remotes/origin/master

सेवा

fetch = +refs/heads/*:refs/remotes/origin/*

1
धन्यवाद! आप जवाब दे रहे हैं वास्तव में इस मुद्दे को आसानी से ठीक करता है और ऐसा करने का सही तरीका लगता है। लेकिन आपको यह जोड़ना चाहिए कि कॉन्फ़िगरेशन फ़ाइल में है .git/config, इसलिए लोग इसे ढूंढ सकते हैं।
डॉटनेट कारपेंटर

19

मेरी भी यही समस्या थी। ऐसा लगता है कि सबसे आसान उपाय सिर्फ रिमोट को हटाना, उसे पढ़ना और लाना है।


1
इस उत्तर को खोजने में इतना समय लगा रहा था। इसने बिना किसी समस्या के काम किया। धन्यवाद। :)
किशनमे सेप

1
मेरे लिए भी काम किया, बहुत अजीब है कि यह इसे हल किया
CailinP

1
git remote -vआपको अपने रीमोट दिखाएगा ताकि आप url को पकड़ git remote rm originसकें, इसे हटा git remote add origin <url>देंगे , इसे फिर से जोड़ पाएंगे।
सिद्धार्थ

इसने मेरे लिए काम किया। मेरे पास एक गिट सबमॉड्यूल था जो किसी भी तरह से, मास्टर की तुलना में किसी भी दूरस्थ शाखा को नहीं मिला। इसे हटाकर फिर से जोड़ दिया।
ज़म्रोनी पी। जुहारा

मेरे लिए काम किया, लेकिन अब मुझे एक चेतावनी मिलती हैwarning: ignoring broken ref refs/remotes/origin/HEAD
dafnahaktana

7

दुर्भाग्य से, git branch -aऔर git branch -rहै नहीं आप, सभी दूरस्थ शाखाओं दिखाते हैं कि यदि निष्पादित नहीं किया है एक "Git लाने"।

git remote show originहर समय लगातार काम करता है। git show-refGit रिपॉजिटरी में सभी संदर्भों को भी दर्शाता है। हालाँकि, यह git branchकमांड की तरह ही काम करता है ।

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