2012-10-06 18 views
47

एक सहयोगी मूल/dev/मुखपृष्ठ के लिए एक नया रिमोट शाखा धक्का दिया और मैं इसे नहीं देख सकते हैं, जब मैं चलाएँ:Git: नई दूरस्थ शाखा नहीं देख सकते

$ git branch -r 

मैं अभी भी दूरदराज शाखाओं पहले से मौजूद देखते हैं।

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

उत्तर

79

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

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

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

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

+1

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

+0

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

+0

मेरी गिट डिफ़ॉल्ट रूप से मेरी कॉन्फ़िगरेशन में कोई बदलाव नहीं है। क्षमा करें, मेरा मतलब था कि अगर कोई नई रिमोट शाखा किसी ऐसे व्यक्ति द्वारा जोड़ा जाता है जिसे मुझे काम करने की ज़रूरत है, तो मुझे इसे ट्रैक करने से पहले गिट फ़ेच मूल को फिर से चलाने की आवश्यकता होगी? मुझे चिंता है कि गिट फ़ेच मेरे अन्य दूरस्थ रूप से ट्रैक की गई शाखाओं जैसे विकास और मास्टर के साथ क्या करेगा जब मैं अभी भी उन पर काम कर रहा हूं। मुझे लगता है कि मुझे लाने से पहले मुझे उन पर खींचना चाहिए? – hybrid9

19

गिट रिमोट अपडेट दूरस्थ रिमोटोरी से उपलब्ध शाखाओं की सूची को भी अपडेट करेगा।

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

git fetch core 

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

git branch --all 
+11

'गिट रिमोट अपडेट' एक पुराना तरीका है ऐसा करने के लिए, नया पसंदीदा आदेश 'गिट fetch' है। –

1

क्या समाप्त हो गया अंत में मेरे लिए काम कर इस तरह, git fetch आदेश करने के लिए दूरस्थ भंडार नाम जोड़ने के लिए था जाँच करें कि क्या .git/config

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

यदि हां, तो चा शामिल nge यह कहना

[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' 
0

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

संबंधित मुद्दे