2012-04-03 10 views
7

पर रखना नहीं चाहता है सबसे पहले: प्रश्न शीर्षक के लिए क्षमा चाहते हैं, मुझे वास्तव में पता नहीं है कि समस्या क्या है इसलिए मुझे नहीं पता कि इसके बारे में कैसे पूछना है।गिट स्थानीय रेफरी को मूल/मास्टर

मैं अपने मास्टर को अपस्ट्रीम मास्टर के साथ अलग करना चाहता हूं (मूल/मास्टर होना चाहिए, जिस तरह से मेरे रिमोट सेट किए गए हैं)।

लेकिन: के बाद मूल को स्थानीय रूप से इस पर काम कर रहा था, इसलिए यह केवल नाम में "मूल" है। यही है: मेरे पास एक स्थानीय रेपो था, इसे एक गिटोलाइट सेटअप में डाल दिया, और फिर इसे अपने स्थानीय गिट को मूल कहने के लिए कहा।

$ git diff master orgin/master 
fatal: ambiguous argument 'orgin/master': unknown revision or path not in the working tree. 

$ git diff master origin/master -- 
fatal: bad revision 'origin/master' 

हम्म:

ये लक्षण हैं।

$ git remote -v 
origin [email protected]:example (fetch) 
origin [email protected]:example (push) 

ठीक है, यह सही दिखता है।

$ git branch -a 
... # nothing from origin 

एचएम।

$ git fetch -a origin 
From example.com:example 
* branch   HEAD  -> FETCH_HEAD 

मुझे नहीं पता कि यह सही है या नहीं। यह उत्पादक है, लेकिन अभी भी git diff master origin/master विफल रहता है, और:

$ git branch --track omaster origin/master 
fatal: Not a valid object name: 'origin/master'. 

Wha?

$ ls .git/refs/remotes 
gitps ps 

यह गलत लगता है: वे पुराने रिमोट हैं जो महीनों के लिए अस्तित्व में नहीं हैं। इसके अलावा वे खाली हैं। और .git/remotes बिल्कुल मौजूद नहीं है, हालांकि मुझे यकीन नहीं है कि यह चाहिए।

उत्तर

10

आपको गिट को बताने की आवश्यकता हो सकती है कि कौन सी शाखाएं मूल से प्राप्त होती हैं। इस रेपो के लिए .git/config फ़ाइल में, [remote "origin"] अनुभाग के तहत, fetch = ... जैसी कोई पंक्ति होनी चाहिए। यह बताता है कि क्या लाने के लिए और इसे स्थानीय रूप से कहां रखा जाए। यहाँ एक सुंदर मानक उदाहरण है:

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

आप fetch = ... लाइन नहीं देखते हैं, तो आप सुरक्षित रूप से उदाहरण से मेल खाते हैं, जो मानक "सभी शाखाओं नज़र रखने और उन्हें मूल/शाखा स्थानीय स्तर पर कॉल करने के लिए जोड़ सकते हैं "विकल्प git clone द्वारा स्थापित किया गया।

git pro book देखें कि क्या हो रहा है इसके बारे में अच्छी जानकारी के लिए।

+1

बहुत बढ़िया, धन्यवाद! हाँ, fetch लाइन पूरी तरह से गायब था। – quodlibetor

+0

धन्यवाद। मेरे लिए, मेरी fetch लाइन मौजूद थी, लेकिन किसी कारण से केवल एक विशेष रिलीज शाखा से ला रहा था। मैंने उपर्युक्त रेखा को अपडेट किया और 'रिमोट अपडेट' गिट किया और फिर 'गिट रीसेट - हार्ड मूल/ब्रंचनिक' और सबकुछ पूरी तरह से काम करता है। – Phil

11

क्या आपने git remote update को आजमाया है? यह आवश्यकतानुसार रिमोट-ट्रैकिंग शाखाओं को बनाने, सभी रिमोट अपडेट करेगा।

+0

दुर्भाग्य से, 'गीट fetch -a orig'' के समान परिणाम, बस कोशिश की। – quodlibetor

0

मुझे अभी भी एक ही समस्या थी। मुझे पता चला कि वास्तव में एक फ़ाइल

$ file .git 
    .git: ASCII text 

के रूप में अपने स्थानीय .git निर्देशिका मैं फ़ाइल नष्ट कर दिया, और Git भंडार

git init && git remote add origin "gitrepo" 
नहीं

भी यकीन है कि यह क्यों हुआ प्रारंभ। उम्मीद है कि यह किसी की मदद कर सकता है ..

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