Git: शाखा के लिए डिफ़ॉल्ट कॉन्फ़िगर किया गया रिमोट कौन सा है?


192

मेरे पास एक दूरस्थ नंगे भंडार है hub। मैं masterशाखा में ही काम करता हूँ । इस त्रुटि संदेश का अंतिम वाक्य मुझे आश्चर्यचकित करता है: मुझे कैसे पता चलेगा कि "आपकी वर्तमान शाखा के लिए डिफ़ॉल्ट कॉन्फ़िगर किया गया रिमोट" है ? और मैं इसे कैसे सेट करूं?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

जवाबों:


230

दूरस्थ शाखा को ट्रैक करें

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

अपने को संपादित करें .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

अब आप बस पुश पुश और गिट पुल कर सकते हैं।

[ स्रोत ]


क्या यह भी निर्धारित नहीं होगा अगर ओपी ने किया git pull hub master?
रयान बिग

@ रयान बिग: स्वचालित रूप से नहीं, या आप हमेशा अपने कॉन्फिग को खराब कर देंगे।
प्रहार करें

36
जब एक बहुत ही कारण से git कमांड मौजूद हों, तो एक कॉन्फिग फ़ाइल को क्यों संपादित करें?
urschrei

43
git शाखा --सेट-अपस्ट्रीम लोकल_ब्रंच रिमोट / रिमोट_ब्रांच (या नीचे
दबाए जाने पर

25
@scragz: बिलकुल नहीं! कमांड दृष्टिकोण की गारंटी देता है कि आपके .itconfig को एक सार्थक स्थिति में छोड़ दिया गया है।
स्मिकी

260

आप इसे और अधिक सरलता से कर सकते हैं, यह गारंटी देते हुए कि आपका .gitconfigएक सार्थक स्थिति में छोड़ दिया गया है:

Git संस्करण v1.8.0 और इसके बाद के संस्करण का उपयोग करना

git push -u hub master जब धक्का, या:
git branch -u hub/master

या

(यह वर्तमान में चेक-आउट शाखा के लिए रिमोट सेट करेगा hub/master)
git branch --set-upstream-to hub/master

या

(यह नाम दिया शाखा के लिए दूरदराज के सेट हो जाएगा branch_nameकरने के लिए hub/master)
git branch branch_name --set-upstream-to hub/master

यदि आप उपयोग कर रहे हैं v1.7.xया पहले

आप का उपयोग करना चाहिए --set-upstream:
git branch --set-upstream master hub/master


3
किसी के लिए भी आश्चर्य: दूसरी कमान का इस्तेमाल मौजूदा शाखाओं के लिए किया जा सकता है
एरिक हू

1
@ एरिक-हू मेरे जवाब में यहां विस्तृत रूप में है: stackoverflow.com/questions/4878249/…
urschrei

1
set-upstream[-to]आदेश में परिवर्तन वर्तमान में कॉन्फ़िगर किया गया दूरस्थ। मूल पोस्टर ने डिफ़ॉल्ट कॉन्फ़िगर किए गए रिमोट के बारे में पूछा । निश्चित रूप से यह काफी समान अवधारणा नहीं है?
स्टीव पिचर

1
प्रत्येक शाखा में वर्तमान में कॉन्फ़िगर किया गया रिमोट होता है, जो निर्दिष्ट करता है कि उस रिमोट पर कौन सी शाखा स्थानीय शाखा से मेल खाती है। डिफ़ॉल्ट दूरदराज के लिए कॉन्फ़िगर निर्धारित करता है जो शाखा धक्का दिया या यदि आप एक स्पष्ट रूप से निर्दिष्ट नहीं है खींचा जाता है। यह उत्तर केवल वर्तमान को सेट करता है । स्वीकृत उत्तर (हाथ से संपादन) भी आपको डिफ़ॉल्ट को सेट करने की अनुमति देता है । किसी को भी एक कमान है कि हाथ से संपादित करने से बचा जाता है पता है?
स्टीव पिचर्स

1
--set-upstream-toअपने जवाब.git/config में @scragz के सुझाव के अनुरूप ही बदलाव किए ।
स्ट्रै

26

संपूर्णता के लिए: पिछले उत्तर बताएं कि अपस्ट्रीम शाखा को कैसे सेट किया जाए, लेकिन इसे कैसे देखा जाए।

ऐसा करने के कुछ तरीके हैं:

git branch -vvसभी शाखाओं के लिए वह जानकारी दिखाता है। (अधिकांश टर्मिनलों में नीले रंग में स्वरूपित)

cat .git/config यह भी दिखाता है।

सन्दर्भ के लिए:


-1

शाखा, जैसे, मास्टर, के लिए प्रभावी पुश रिमोट प्राप्त करने के लिए कमांड है:

git config Branch.master.pushRemote || git config Remote.pushDefault || git config Branch.master.remote

यहाँ क्यों ("आदमी गिट विन्यास" आउटपुट से):

Branch.name.remote [...] git fetch और git push को बताता है कि किस रिमोट को लाने के लिए / पुश से [...] [पुश के लिए] Remote.pushDefault (सभी शाखाओं के लिए) [और] के साथ ओवरराइड किया जा सकता है । वर्तमान शाखा [..] आगे शाखा द्वारा overridden.name.pushRemote [...]

किसी कारण के लिए, "मैन गेट पुश" केवल ब्रांच के बारे में बताता है ।name.remote (भले ही इसमें तीनों की कम से कम पूर्वता हो) + त्रुटिपूर्ण रूप से कहा गया है कि यदि यह सेट नहीं किया गया है, तो चूक को मूल पर पुश करें - यह नहीं है, यह सिर्फ है जब आप एक रेपो क्लोन करते हैं, तो ब्रांच .name.remote मूल में सेट हो जाता है, लेकिन यदि आप इस सेटिंग को हटा देते हैं, तो git पुश विफल हो जाएगा, भले ही आपके पास अभी भी ओरिजिनल रिमोट हो


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