2010-02-10 10 views
45

मैं एक दूरस्थ भंडार की स्थापना में लाने के लिए और मैं इसे करने के लिए नए परिवर्तन धक्का कर सकते हैं, लेकिन मैं इसे से प्राप्त नहीं की जा सकती है, मैं हमेशा (बल्कि गुप्त) त्रुटि संदेश मिलता है इसका क्या मतलब है? लाने में सक्षम करने के लिए मुझे क्या करना चाहिए?Git मना वर्तमान शाखा

(ध्यान दें कि यह रिमोट रेपो केवल बैकअप रेपो के रूप में उपयोग किया जाता है, इसलिए यह मेरे स्थानीय भंडार की एक बहुत ही सटीक प्रति होना चाहिए। मैं वास्तव में समझ नहीं पा रहा हूं कि मैं इसे क्यों दबा सकता हूं लेकिन इससे प्राप्त नहीं कर सकता। ..)

मेरे config लगता है:

[remote "origin"] 
    url = ssh://blablablah 
    fetch = +refs/*:refs/* 
    mirror = true 
+0

क्या आप अपनी कॉन्फ़िगरेशन के लिए अपनी कॉन्फ़िगरेशन दिखा सकते हैं जिसमें आप ला रहे हैं? –

+0

एमएमएच, मैं उस कॉन्फ़िगरेशन को कैसे देख सकता हूं? मैंने बस 'गिट रिमोट एड नेम सर्वर' का उपयोग करके उस रिमोट रिपोजिटरी को सेट किया है, शायद '--mirror' विकल्प के साथ। –

+0

ओलिवर, कॉन्फ़िगरेशन '.git/config' में है। विशेष रूप से, चार्ल्स '[रिमोट ...]' अनुभाग के बारे में बात कर रहा है, मुझे विश्वास है। –

उत्तर

24

आपको क्या करने की कोशिश कर रहे हैं शाखा आप पर काम कर रहे हैं लाने के लिए है। यही है, आप मास्टर शाखा पर हैं और आप इसे अपडेट करने का प्रयास करते हैं। यह संभव नहीं है। remotes/* शाखाओं को अपडेट करना और फिर इसे अपने स्थानीय लोगों में खींचना अधिक आम है। क्या आप चाहते हैं, शायद

git remote add otherrepo thehost:/the/path.git 

सेटअप भंडार remotes/otherrepo/* में दिलवाया जा करने के लिए होगा यही है,। git fetch otherrepo चाल करना चाहिए। वैकल्पिक, आप अपने .git/config मैन्युअल रूप से संपादित कर सकते हैं और जैसे कुछ दूरस्थ के लिए fetch सेट कर सकते हैं।

+0

धन्यवाद! मैं वास्तव में समझ नहीं पा रहा हूं कि मैं क्या कर रहा हूं, लेकिन आपकी सलाह के बाद यह ठीक काम करता है। मुझे लगता है कि किसी को स्पष्ट रूप से कहना है कि स्थानीय भंडार में रिमोट शाखाएं कहां खत्म हो जाएंगी; मेरे पास शायद मेरी स्थानीय शाखा को ओवरलैप करने की रिमोट शाखा प्रकार थी, हालांकि मुझे यकीन नहीं है कि यह समझ में आता है या नहीं। :-) फिर भी धन्यवाद! –

+1

अधिक या कम। तथ्य यह है कि रिमोट रेफरी "रेफरी/रिमोट्स" में हैं, केवल एक सम्मेलन है, लेकिन आप वास्तव में सीधे अपने "रेफरी/हाड्स/मास्टर" में नहीं आना चाहते हैं। विशेष रूप से, जब आपके "रेफ/हेड/मास्टर" की जांच की जाती है। –

+0

@ माइकल क्रेलिन-हैकर मुझे "थॉस्ट" –

1

मुझे यह समस्या आई है जब मैंने विचारहीन रूप से इसे लाने के बजाय एक भंडार क्लोन किया, ताकि दोनों भंडार स्वामी थे। यदि आपने रिमोट रिपोजिटरी पर कोई काम नहीं किया है, तो आप मूल गिट कमांड के साथ चीजों को निम्न प्रकार से ठीक कर सकते हैं: (1) रिमोट रिपोजिटरी को हटाएं, (2) स्थानीय रिपोजिटरी को कॉपी करें जहां रिमोट एक था, (3) हटाएं स्थानीय एक, और फिर (4) स्थानीय

git init; git fetch $REMOTE_GIT_REPOSITORY_URL 

फिर git pull और git push का उपयोग कर सही काम करते हैं जाएगा भंडार की स्थापना की। git remote से बचने का लाभ, प्रति माइकल के अधिक कुशल और सिद्धांतित उत्तर के अनुसार, आपको ट्रैकिंग शाखाओं के अर्थशास्त्र के बारे में सोचने की आवश्यकता नहीं है।

+0

एक क्लोन एक क्लोन है।"मास्टर रेपो" पूरी तरह से एक सम्मेलन है। यहां सवाल "गिट फ़ेच रिमोट रेफरी: रेफरी" के व्यवहार के बारे में है जब HEAD को रेफरी करने के लिए सेट किया गया है। – qneill

35

यदि किसी को यह पता चलता है क्योंकि वे विशेष रूप से वर्तमान शाखा में लाने के लिए चाहते हैं, तो आप --update-head-ok ध्वज का उपयोग कर सकते हैं। the docs से:

-u
--update सिर-ठीक
डिफ़ॉल्ट Git तक लाने सिर जो वर्तमान शाखा से मेल खाती है अद्यतन करने के लिए मना कर दिया। यह ध्वज चेक अक्षम करता है। गिट fetch के साथ संवाद करने के लिए यह पूरी तरह से गिट खींचने के लिए आंतरिक उपयोग के लिए है, और जब तक कि आप अपना खुद का चीनी मिट्टी के बरतन को लागू नहीं कर रहे हैं, आपको इसका उपयोग नहीं करना चाहिए।

कुछ मामलों में हम हमारे अपने चीनी मिट्टी के बरतन आदेश, उदाहरण के लिए, स्वचालन और टूलींग को लागू करना चाहते हैं में

+1

इस मामले में गिट को सिर अपडेट क्यों नहीं करना है? वे इस ध्वज का उपयोग क्यों नहीं करना चाहते हैं? –

+0

मैं भी उत्सुक हूं, वर्तमान को छोड़कर अन्य सभी शाखाओं को अपडेट करने के लिए यह ठीक क्यों है? – cdosborn

+0

मैंने सोचा था कि काम को खोने से रोकने के लिए प्रतिबंध था, लेकिन मैंने सत्यापित किया कि '-उ' ध्वज गैर-फास्ट-फॉरवर्ड कमेट्स के साथ भी अस्वीकार कर दिया गया है: '! [अस्वीकार] मास्टर -> मास्टर (गैर-फास्ट-फॉरवर्ड) ' –

-1

मुझे एक ही समस्या है। सबसे पहले मैं का उपयोग कर इस

git fetch [remote_name] [branch_name] 

मैं एक ही समस्या आप का उल्लेख किया था लाने के लिए प्रयास करें। उसके बाद मैंने इस सरल आदेश की कोशिश की।

git pull [remote_name] [branch_name] 

नोट परिवर्तनों को लाएगा और विलय करेगा। यदि आप टर्मिनल का उपयोग करते हैं तो फ़ाइल खोलने की आवश्यकता होती है। इस संदेश के साथ आप नवीनतम प्रतिबद्धता को धक्का देंगे। इस आदेश का प्रयास करें और अंत में आप अनुरोध को धक्का दे पाएंगे।

git push [remote_name] [branch_name_local] 
0

इसके अलावा इस इस अगर तुम में मास्टर शाखा कर रहे हैं और नवीनतम इस

Git पुल मूल मास्टर कोशिश प्राप्त करना चाहता है

0

आप वास्तव में Git टाइप कर रहे काम करना चाहिए कमांड लाइन में आदेश देता है, या आप अपने कोड से गिट निष्पादन योग्य चल रहे हैं?
यदि आप इसे कोड से चला रहे हैं, तो क्या आप सुनिश्चित हैं कि गिट सही स्थानीय निर्देशिका में लाने की कोशिश कर रहा है?

इसके दो संभावित यह करने के लिए तरीके हैं: क्रियान्वित Git
(C# example पहले सही कार्यशील निर्देशिका स्थापित करने के लिए अपने प्रोग्रामिंग भाषा द्वारा प्रदान की

  1. विकल्पों का उपयोग करके, क्योंकि मैं क्या कर रहा हूँ है कि उपयोग)

  2. स्थानीय रिपो के साथ निर्देशिका निर्दिष्ट करने के लिए हमेशा गिट में the -C parameter पास करें।


मैं एक परियोजना जहाँ मैं सी # कोड से निष्पादन योग्य Git फोन कर रहा हूँ, और मुझे प्रश्न में की तरह एक ही त्रुटि संदेश मिला जब मैं गलती से -C parameter स्थापित करने के लिए भूल गया था।

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