Git: नई दूरस्थ शाखा नहीं देख सकता


116

एक सहकर्मी ने मूल / देव / होमपेज पर एक नई दूरस्थ शाखा को धकेला और जब मैं चलता हूं तो मैं इसे नहीं देख सकता:

$ git branch -r

मुझे अब भी दूरस्थ शाखाएं दिखती हैं।

मुझे लगता है कि यह इसलिए है क्योंकि मेरे स्थानीय रिमोट रेफ्स अप-टू-डेट नहीं हैं, इसलिए जब मैंने एक जीआईटी पुल चलाया तो कुछ भी नहीं हुआ क्योंकि जीआईटी पुल केवल वर्तमान कामकाजी शाखा पर ही सही है? गिट पुश के विपरीत जो सभी शाखाओं को धक्का देता है जिनके पास संबंधित दूरस्थ शाखा में परिवर्तन होता है?


एक संबंधित समस्या - दूरस्थ शाखा नहीं देख सकते
RBT

1
भूलने में कामयाब रहे git pull, धन्यवाद
JelenaČuklina

1
मेरे मामले git fetch <name-of-remote>में चाल चली। रिमोट के नाम के बिना, यह काम नहीं किया।
मेंनो डीज - वैन रिजेविकज

जवाबों:


164

सबसे पहले, डबल चेक करें कि कमांड का उपयोग करके शाखा को वास्तव में दूर से धकेल दिया गया है git ls-remote origin। यदि नई शाखा आउटपुट में दिखाई देती है, तो कोशिश करें और कमांड दें git fetch: इसे दूरस्थ रिपॉजिटरी से शाखा संदर्भ डाउनलोड करना चाहिए।

यदि आपकी दूरस्थ शाखा अभी भी दिखाई नहीं देती है, तो डबल चेक ( ls-remoteआउटपुट में) रिमोट पर शाखा का नाम क्या है और, विशेष रूप से, अगर यह साथ शुरू होता है refs/heads/। यह है, क्योंकि डिफ़ॉल्ट रूप से, का मूल्य remote.<name>.fetchहै:

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

इसलिए कि केवल दूरस्थ संदर्भ जिनके नाम से शुरू होता है, refs/heads/को स्थानीय रूप से दूरस्थ-ट्रैकिंग संदर्भ के रूप में मैप किया जाएगा refs/remotes/origin/(यानी, वे दूरस्थ-ट्रैकिंग शाखाएं बन जाएंगे)


4
मैं एक git लाने के बाद नई दूरस्थ शाखा देखने में सक्षम था, लेकिन यह निश्चित नहीं है कि क्या अंतर है अगर मैंने सिर्फ git लाने का काम किया है? मैंने git रिमोट अपडेट के बारे में पढ़ा, लेकिन यह स्पष्ट नहीं था कि क्या किया होगा। क्या मुझे यहां से किसी नई दूरस्थ शाखाओं के लिए गिट लाने की आवश्यकता होगी?
संकर

1
@ हाइब्रिड 9 यदि आप उपयोग करते हैं git fetch, तो git डिफ़ॉल्ट रिमोट रिपॉजिटरी से संदर्भ डाउनलोड करेगा जो इसमें निर्दिष्ट किया गया है .git/config: आमतौर पर इसे बुलाया जाएगा origin, इसलिए दोनों कमांड बराबर हैं, लेकिन किसी कारण के लिए आपका विशिष्ट कॉन्फ़िगरेशन भिन्न हो सकता है। नहीं, आपको git fetchप्रत्येक शाखा के लिए देने की आवश्यकता नहीं है , (डिफ़ॉल्ट रूप से) यह सभी शाखाओं को प्राप्त करती है।
मार्को लेओग्रांडे

1
@ हाइब्रिड 9 + के git pullबराबर है (या यदि आपने चूक को बदल दिया है), तो आप हमेशा की तरह उपयोग कर सकते हैं , और नई दूरस्थ शाखाएं खुद-ब-खुद पॉप हो जाएंगी। git fetchgit mergegit rebasegit pull
मार्को लेओग्रांडे

1
मैं मूल रूप से गिट्ट खींचता था, लेकिन मैंने उस नई दूरस्थ शाखा को कभी नहीं देखा, जिसने मुझे वास्तव में भ्रमित किया। केवल जब तक मैं git लाने के मूल भाग गया। मैं अपने सवालों के जवाब देने में समय की सराहना करता हूं।
संकर

2
@ हाइब्रिड मेरे पास एक ही मुद्दा है। git ls-remote gerritrepo:projectनई दूरस्थ शाखा दिखाता है लेकिन git branch -aनहीं ... मुझे एक और क्लोन बनाना है और उसके बाद ही नई शाखा दिखाई देगी
विक्रम

79

जांचें कि क्या .git/configशामिल हैं

[remote "origin"]
    url = …
    fetch = +refs/heads/master:refs/remotes/origin/master

यदि हां, तो इसे कहने के लिए बदलें

[remote "origin"]
    url = …
    fetch = +refs/heads/*:refs/remotes/origin/*

तब आपको इसका उपयोग करने में सक्षम होना चाहिए:

$ git fetch
remote: Counting objects: …
remote: Compressing objects: ..
Unpacking objects: …
remote: …
From …
 * [new branch]            branchname -> origin/branchname
$ git checkout branchname
Branch branchname set up to track remote branch branchname from origin.
Switched to a new branch 'branchname'

12
प्रारंभिक उथले क्लोन के बाद मेरे साथ ऐसा हुआ।
ArkTekniK

उत्तम!!! आपका बहुत बहुत धन्यवाद! एक कस्टम होमब्रॉव टैप को कमांड के साथ इंस्टॉल करते समय मेरे साथ ऐसा हुआ brew tap user/repo: brewआपके द्वारा उल्लिखित रेपो की स्थानीय कॉपी में आपके द्वारा बताई गई सेटिंग्स थीं और मेरे रेपो में मौजूद अन्य शाखाओं को देखना और उनका उपयोग करना संभव नहीं था। एक बार फिर धन्यवाद! :) +1!
rmbianchi

3
.IT / config फ़ाइल को मैन्युअल रूप से संपादित करने के बजाय निम्नलिखित कमांड का उपयोग किया जा सकता है । git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"और फिर मूलgit fetch origin पर सभी शाखाओं को प्राप्त करने के लिए ।
डॉटनेटकारपेंटर

यह एक अच्छा एक है!
madz

47

सबसे सरल उत्तर है:

git fetch origin <branch_name>


2
यह सचमुच मेरे लिए काम करने वाली एकमात्र चीज़ थी।
थियोडोर आर। स्मिथ

3
यह मेरे लिए काम नहीं करता है। मुझे यह त्रुटि मिलती है:fatal: Couldn't find remote ref <branch_name>
Parisa Khateri

3
हाँ, यह मेरे लिए भी काम आया, इस git चेकआउट के बाद ठीक काम किया !!
whoami

30

एक कर Git दूरस्थ अद्यतन भी दूरदराज के भंडार से उपलब्ध शाखाओं की सूची अद्यतन करेगा।

यदि आप TortoiseGit का उपयोग कर रहे हैं, तो संस्करण 1.8.3.0 के रूप में, आप "Git -> सिंक" कर सकते हैं और दिखाई देने वाली विंडो के निचले बाएँ में "रिमोट अपडेट" बटन होगा। उस पर क्लिक करें। फिर आपको "गिट -> स्विच / चेकआउट" करने में सक्षम होना चाहिए और आपके द्वारा चुनी गई शाखाओं के ड्रॉपडाउन में नई दूरस्थ शाखा दिखाई दे सकती है।


18
git remote updateऐसा करने का एक पुराना तरीका है, नया पसंदीदा कमांड है git fetch

TortoiseGit (2.8.0.0) के मेरे संस्करण में निचले बाएँ बटन में तीर के नीचे कई विकल्प हैं, और यह याद रखता है कि आपने पहले क्या चुना था। इसका मतलब है कि बटन "रिमोट अपडेट" नहीं कह सकता है। यदि आपने इसका उपयोग नहीं किया है, तो यह "पुल" कहेगा। इसलिए तीर पर क्लिक करें और आप विकल्पों की सूची में "रिमोट अपडेट" देखेंगे।
माइकल

14

मान लें कि हम रिलीज़ / 1.0.5 की खोज कर रहे हैं

जब git fetch -allहै काम नहीं कर रहा है और आप दूरस्थ शाखा नहीं देख सकते हैं कि और git branch -rनहीं इस विशिष्ट शाखा दिखा।

1. रिमोट (शाखाओं, टैग, ...) से सभी रिफ को प्रिंट करें:

git ls-remote origin आपको दूरस्थ शाखा दिखानी चाहिए जिसे आप खोज रहे हैं।

e51c80fc0e03abeb2379327d85ceca3ca7bc3ee5        refs/heads/fix/PROJECT-352
179b545ac9dab49f85cecb5aca0d85cec8fb152d        refs/heads/fix/PROJECT-5
e850a29846ee1ecc9561f7717205c5f2d78a992b        refs/heads/master
ab4539faa42777bf98fb8785cec654f46f858d2a        refs/heads/release/1.0.5
dee135fb65685cec287c99b9d195d92441a60c2d        refs/heads/release/1.0.4
36e385cec9b639560d1d8b093034ed16a402c855        refs/heads/release/1.0
d80c1a52012985cec2f191a660341d8b7dd91deb        refs/tags/v1.0

आउटपुट में नई शाखा 'रिलीज़ / 1.0.5' दिखाई देती है।

2. एक दूरस्थ शाखा लाने बल:

git fetch origin <name_branch>:<name_branch>

$ git fetch origin release/1.0.5:release/1.0.5

remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (313/313), done.
remote: Compressing objects: 100% (160/160), done.

Receiving objects: 100% (231/231), 21.02 KiB | 1.05 MiB/s, done.
Resolving deltas: 100% (98/98), completed with 42 local objects.
From http://git.repo:8080/projects/projectX
 * [new branch]        release/1.0.5 -> release/1.0.5

अब आपके पास स्थानीय रूप से रेफरी भी हैं, आप इस शाखा की जांच (या जो भी) करते हैं।

काम हो गया!


1
आप एक जीवन रक्षक हैं :)
चक्र

# 2 वही था जिसकी मुझे तलाश थी। धन्यवाद!
मैथ्यू

4

यह तुच्छ लगता है, लेकिन मेरा मुद्दा यह था कि मैं सही परियोजना में नहीं था। सुनिश्चित करें कि आप जिस परियोजना में होने की उम्मीद कर रहे हैं; अन्यथा, आप सही शाखाओं को खींचने में सक्षम नहीं होंगे।


Oooops! अच्छा था!
मार्क

2

मैंने पाशविक बल का इस्तेमाल किया और रिमोट को हटा दिया और फिर उसे जोड़ा

git remote rm <remote>
git remote add <url or ssh>

1

अंत में मेरे लिए काम करना आखिरकार रिमोट रिपॉजिटरी नाम को git fetchइस तरह जोड़ना था , जैसे:

git fetch core

अब आप उन सभी को इस तरह देख सकते हैं:

git branch --all

0

आप दूरस्थ शाखा / n git fetch && git checkout remotebranch चेकआउट कर सकते हैं

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