2011-02-25 14 views
8

मैंने एक भंडार क्लोन किया और मास्टर शाखा में काम कर रहा था। एक लगातार समस्या थी: git push (और git push) काम नहीं किया और लंबे, अनजान त्रुटि संदेश दिया। परीक्षण-और-त्रुटि के माध्यम से, मैंने git push origin master को सही ढंग से धक्का दिया। लेकिन अब मैंने कुछ अजीब देखा है:मास्टर शाखा ट्रैक कैसे बनाएं?

$ git config push.default tracking 
$ git push 
fatal: The current branch master is not tracking anything. 

डब्ल्यूटीएफ? मैंने सोचा कि अगर आपने एक भंडार क्लोन किया है, तो मास्टर को स्वचालित रूप से ट्रैक किया गया था। वैसे भी, मेरे असली प्रश्न

  1. मुझे क्लोन बनाने के लिए कैसे माना जाता है ताकि शाखाओं को ट्रैक किया जा सके?
  2. क्या परिणाम नहीं ट्रैकिंग होने के (वर्तमान के अलावा अन्य) कर रहे हैं?
  3. मैं वर्तमान स्थिति को कैसे ठीक कर सकता हूं, ताकि मेरी शाखा रिमोट को ट्रैक करे?

संपादित मेरे स्थानीय भंडार अन्य तरीकों से अजीब व्यवहार कर रही किया गया था; सबसे विशेष रूप से: मैं दूरस्थ शाखाएं नहीं बना सका। मैंने इसे एक तरफ रखा और एक नया क्लोन बनाया, और यह ताजा तरीकों से अजीब तरह से अभिनय कर रहा है।

पहले, master ट्रैक कर रहा है (हाँ)। दूसरा, मैं एक दूरस्थ शाखा बनाने में सक्षम था, लेकिन यह अजीब है।

Ratatouille $ git push origin origin:refs/heads/premium 
Total 0 (delta 0), reused 0 (delta 0) 
To [email protected]:gamecrush/Ratatouille.git 
* [new branch]  origin/HEAD -> premium 
Ratatouille $ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 
    origin/premium 

रैटौउल रिमोट रेपो का नाम है। अजीब बिंदु: -> के लिए क्या है? यह नया प्रतीत होता है और यह पुराने स्थानीय रेपो या रिमोट के अन्य क्लोन के लिए दिखाई नहीं देता है।

लेकिन अब शाखाओं और ट्रैकिंग काम के रूप में विज्ञापित।

+0

मैं कुछ कॉफी की जरूरत है। मैंने इसे "राक्षस ट्रक ब्रेक को कैसे ठीक किया?" के रूप में पढ़ा और सोचा "इसके लिए एक स्टैक एक्सचेंज भी नहीं है!" :-( – corsiKa

+0

ठीक है, मैं * भी * मेरी राक्षस ट्रक पर ब्रेक को ठीक करने की जरूरत है और मैं * मिस्टर ब्रूक्स * स्क्रिप्ट – Malvolio

+0

संबंधित मुद्दे की एक प्रति की जरूरत है -।। मैं एक "Git रीसेट के बाद एक ट्रैकिंग शाखा बंद ट्रैकिंग था - -हार्ड "(यकीन नहीं क्यों) और एरोमास्टर के जवाब ने समस्या को हल किया। – joelmdev

उत्तर

23

क्या करने के लिए अपने branch.autosetupmerge सेट है? डिफ़ॉल्ट रूप से इसे क्लोन करते समय शाखा ट्रैकिंग को सेट करना चाहिए था।

इस के साथ शाखा के लिए नदी के ऊपर सेट करने का प्रयास शाखा दूरस्थ ट्रैक बनाने के लिए।

git branch --set-upstream master origin/master 
+0

मैं इसके साथ खेल रहा हूं, इसलिए यह वर्तमान में सच है, लेकिन जब रेपो क्लोन किया गया था तब भी बहुत झूठा हो सकता था (हालांकि मैं क्यों नहीं करता ' टी पता है) क्या यह दिखाने का कोई तरीका है कि, यदि कुछ भी हो, तो शाखा ट्रैकिंग कर रही है? – Malvolio

+0

@ माल्वोलियो: उस रिमोट में कौन सी शाखाएं ट्रैकिंग कर रही हैं, इसकी एक सूची प्राप्त करने के लिए 'गिट रिमोट शो मूल' का उपयोग करें। आपके संपादित प्रश्न में 'मूल/HEAD -> मूल/मास्टर' मेरे लिए सामान्य दिखता है। – Arrowmaster

+0

@Arrowmaster - पहले, आदेश के नाम के लिए धन्यवाद। दूसरा, शाब्दिक अर्थ में यह सामान्य नहीं है: अन्य repos की कमी है -> बात। 'शो उत्पत्ति' का उत्पादन अधिकतर सहायक है इसके अलावा: 'हेड शाखा (रिमोट हेड संदिग्ध है, निम्नलिखित में से एक हो सकता है): '(मास्टर और मेरी नई शाखा सूचीबद्ध है)। मेरा एकमात्र सिद्धांत: मैंने दूसरी शाखा बनाने के बाद से किसी भी शाखा पर कोई भी नई प्रतिबद्धता नहीं की है, इसलिए अगर सिर को एक शाखा को इंगित करना चाहिए, न कि शाखा, और सिर (उह, यदि वह शब्द है) शाखाओं के समान हैं , तो यह नहीं बता सकता कि यह किस शाखा पर है। – Malvolio

6

एक वैकल्पिक: रिमोट ट्रैक करने के लिए, अपने पहले धक्का दौरान निष्पादित मास्टर स्थापित करने के लिए:

git push -u origin master 

-u--set-upstream के रूप में भी ऐसा ही होगा। इसके बाद, अपनी ट्रैकिंग शाखाओं सहित शाखाओं की एक सूची देखने के लिए git branch -vv चलाएं।

+0

पसंद करें, @ डेव। क्या मैं समझ सकता हूं कि "अपस्ट्रीम" "ट्रैक" का पारस्परिक संबंध है? अगर ए बी की अपस्ट्रीम है, बी ए ट्रैक करता है? शायद फिनिश में ... – Malvolio

+1

हाँ, मुझे लगता है कि यह एक उचित बयान है। यदि आप डाउनस्ट्रीम शाखा को ट्रैक करने वाली अपस्ट्रीम शाखा के बारे में सोचते हैं तो मेरा सिर चोट लगने लगता है। –

1

अन्य विकल्प:

git branch --set-upstream-to=origin/master 
संबंधित मुद्दे