सवाल मैं रिमोट गिट शाखा कैसे देखूं?


किसी ने बुलाया एक शाखा धक्का दिया test साथ में git push origin test एक साझा भंडार के लिए। मैं शाखा देख सकता हूँ git branch -r

अब मैं रिमोट की जांच करने की कोशिश कर रहा हूं test डाली।

मैंने कोशिश की:

  • git checkout test जो कुछ भी नहीं करता है

  • git checkout origin/test देता है * (no branch)। जो भ्रमित है। मैं "शाखा नहीं" कैसे हो सकता हूं?

मैं रिमोट गिट शाखा कैसे देखूं?


5316
2017-11-23 14:23


मूल


@inger लेकिन इसमें नई स्थानीय शाखा का नाम बदलने की संभावना शामिल नहीं है (यदि आप बाद में सेट-अपस्ट्रीम करना चाहते हैं और नामकरण स्थिरता रखना चाहते हैं) - fachexot
मुझे लगता है कि यह धागा असहाय है। ऐसा लगता है कि कुछ भी काम नहीं करता है, मूल प्रश्न कई उत्तरों में खो गया है। मैंने हर शब्द पढ़ा है, नीचे सब कुछ करने की कोशिश की है, और यह नहीं पता कि ओपी क्या करना चाहता है। - Tony Ennis
गिट कमांड शुरू करने के लिए सहज नहीं हैं, मिश्रण में हाल के संस्करणों के साथ पेश किए गए परिवर्तन जोड़ें और आपके पास यह पृष्ठ है ... - Christophe Roussy
मुझे लगता है कि मैं पागल गोलियां ले रहा हूं। मैं एक शाखा से चेकआउट करने की कोशिश कर रहा हूं upstream, न सिर्फ origin, और प्रत्येक अनुशंसित उत्तर कुछ भी दूरस्थ रूप से सहायक नहीं करता है (पन-इरादा)। संपादित करें - मुझे क्षमा करें, शीर्ष 2 उत्तरों में निहित सुझावों की भीड़ बेकार थी; तीसरा एक (git branch test origin/test) क्या काम करता है। शीर्ष 2 में ग्लेड वोटों की संख्या 20x है ... - dwanderson
हो सकता है कि आपके पास अपने काम के पेड़ में 'test' नाम की एक फ़ाइल हो, देखें stackoverflow.com/a/45006389/792416 विस्तार के लिए। - oldman


जवाब:


अद्यतन करें

जकूब का जवाब वास्तव में इस पर सुधार करता है। गिट संस्करण ≥ 1.6.6 के साथ, आप बस कर सकते हैं:

git fetch
git checkout test

(उपयोगकर्ता मसूकोमी नीचे बताता है git checkout test यदि आपके पास एकाधिक रिमोट हैं तो आधुनिक गिट में काम नहीं करेंगे। इस मामले में उपयोग करें git checkout -b test <name of remote>/test)।

पुराना उत्तर

रिमोट शाखा पर स्थानीय रूप से काम करना शुरू करने से पहले, आपको इसे नीचे दिए गए उत्तरों में बुलाए जाने की आवश्यकता है।

शाखा लाने के लिए, आपको बस इसकी आवश्यकता है:

git fetch origin

यह आपके लिए सभी रिमोट शाखाएं लाएगा। आप चेकआउट के लिए उपलब्ध शाखाएं देख सकते हैं:

git branch -v -a

हाथ में रिमोट शाखाओं के साथ, अब आपको उस शाखा की जांच करनी होगी जिसमें आप रुचि रखते हैं, आपको स्थानीय कामकाजी प्रतिलिपि देते हुए:

git checkout -b test origin/test

7366
2017-11-23 14:26



इस पर विस्तार करने के लिए: गिट आपको किसी और की शाखाओं पर काम करने की अनुमति नहीं देता है। आप केवल अपने ही काम कर सकते हैं। इसलिए यदि आप किसी और की शाखा में जोड़ना चाहते हैं, तो आपको उस शाखा की अपनी "प्रतिलिपि" बनाना होगा, जो उपरोक्त आदेश करता है (ठीक है, यह आपकी शाखा बनाता है और इसे भी जांचता है)। - Dan Moulding
यदि यह एक नई रिमोट शाखा है तो आपको इसकी आवश्यकता हो सकती है git fetch ऐसा करने से पहले कि गिट के बारे में पता है origin/test - Neil Sarkar
... और आप इसके साथ ऐसा करेंगे git fetch origin test - Andrew
त्रुटि: "गिट चेकआउट: पथ अपडेट करना शाखाओं के साथ असंगत है। क्या आप चेकआउट करना चाहते थे origin/test जिसे प्रतिबद्ध के रूप में हल नहीं किया जा सकता है? " - Xeoncross
git checkout test आधुनिक गिट में काम नहीं करेगा यदि आपके पास एकाधिक रिमोट हैं जिनके पास समान शाखा नाम है। यह नहीं पता कि किस का उपयोग करना है। - masukomi


पक्षीय लेख: आधुनिक गिट (> = के साथ 1.6.6), आप बस उपयोग करने में सक्षम हैं

git checkout test

(ध्यान दें कि जादुई प्रदर्शन करने के लिए यह 'परीक्षण' नहीं है 'मूल / परीक्षण') DWIM-मेरी और आपके लिए स्थानीय शाखा 'टेस्ट' बनाएं, जिसके लिए अपस्ट्रीम रिमोट-ट्रैकिंग शाखा 'मूल / परीक्षण' होगी।


* (no branch) में git branch आउटपुट का मतलब है कि आप अज्ञात शाखा पर हैं, तथाकथित "अलग सिर" राज्य (सिर बिंदु सीधे करने के लिए, और कुछ स्थानीय शाखा के लिए प्रतीकात्मक संदर्भ नहीं है)। यदि आपने इस अनाम शाखा पर कुछ काम किया है, तो आप हमेशा मौजूदा प्रतिबद्धता से स्थानीय शाखा बना सकते हैं:

git checkout -b test HEAD

1092
2017-11-24 00:17



असुरक्षित, लेकिन यह संस्करण पिछले कुछ वर्षों में जारी किया गया है - यह वाक्यविन्यास जानना बहुत समय बचा सकता है क्योंकि अभी भी बहुत सारे पुराने दस्तावेज और टिप्पणी धागे तैर रहे हैं जो ऐसा करने के लिए पुरानी विधि का सुझाव देते हैं। - Curtis
"आधुनिक गिट" - रिकॉर्ड के लिए, (लगभग) आप किस संस्करण का जिक्र कर रहे हैं? कभी-कभी हमें पुराने डिस्ट्रोज़ चलने वाले सिस्टम पर काम करना पड़ता है। - Craig McQueen
इस संदर्भ में "आधुनिक गिट" है गिट 1.6.6 - Bobby Norton
@aidan अगर आपको एक प्रतिक्रिया मिलती है error: pathspec 'branch_name' did not match any file(s) known to git. तो आपको पहले एक गिट fetch करना चाहिए। - Dennis
गिट संस्करण 1.8.3.msysgit.0 का उपयोग करना और यह मेरे लिए काम नहीं करता है - गिट को ज्ञात किसी भी फाइल (ओं) से मेल नहीं खाता - मैंने कई गिट फ़ेच किए हैं - PandaWood


इस मामले में, आप शायद एक स्थानीय बनाना चाहते हैं test शाखा जो रिमोट को ट्रैक कर रही है test डाली:

$ git branch test origin/test

के पुराने संस्करणों में git, आपको एक स्पष्ट की आवश्यकता है --track विकल्प, लेकिन जब आप रिमोट शाखा को बंद कर रहे हैं तो यह डिफ़ॉल्ट है।


478
2017-11-23 14:27



यह बिना स्विच किए स्थानीय शाखा बनायेगा। - Alex.Designworks
हालांकि मैं घातक हो गया: अस्पष्ट वस्तु का नाम: 'उत्पत्ति / देव' - जहां मूल रूप से एक शाखा 'देव' सबसे निश्चित रूप से मौजूद है - लेकिन मैं गलती से अपनी मशीन पर "उत्पत्ति / देव" नामक एक शाखा बनाई गई थी (मेरे पिछले बेवकूफ प्रयासों में यह अधिकार पाने के लिए, इसमें कोई संदेह नहीं है ... ... ouch - PandaWood
यह मुझे त्रुटि त्रुटि दे रहा है: कुछ संकेतों को संकेत देने में विफल रहा: अपडेट अस्वीकार कर दिए गए थे क्योंकि एक धक्का वाली शाखा टिप इसके रिमोट संकेत के पीछे है: समकक्ष। इस शाखा को देखें और रिमोट चेंज संकेतों को मर्ज करें: (उदा। 'गिट पुल') फिर से धक्का देने से पहले। संकेत: विवरण के लिए 'गिट पुश --help' में 'फास्ट-फॉरवर्ड' के बारे में नोट देखें। - pal4life
git branch test मेरे लिये कार्य करता है - Isaac Pak


स्वीकृत उत्तर तुम्हारे लिए काम नहीं कर रहा है?

जबकि पहला और चयनित उत्तर तकनीकी रूप से है सही बात, संभावना है कि आपने अभी तक सभी ऑब्जेक्ट्स को पुनर्प्राप्त नहीं किया है और रिमोट रिपोजिटरी से रिफ्रेश किया है। यदि ऐसा है, तो आपको निम्न त्रुटि प्राप्त होगी:

$ git checkout -b remote_branch origin/remote_branch

घातक: गिट चेकआउट: पथ अपडेट करना शाखाओं के साथ असंगत है।
  क्या आप 'मूल / remote_branch' चेकआउट करना चाहते हैं जिसे प्रतिबद्ध के रूप में हल नहीं किया जा सकता है?

उपाय

अगर आपको यह संदेश प्राप्त होता है, तो आपको पहले एक करना होगा git fetch origin कहा पे origin चलने से पहले रिमोट रिपोजिटरी का नाम है git checkout remote_branch। प्रतिक्रियाओं के साथ एक पूर्ण उदाहरण यहां दिया गया है:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

जैसा कि आप देख सकते हैं, चल रहा है git fetch origin किसी भी दूरस्थ शाखा को पुनर्प्राप्त किया गया था जिसे हम अभी तक हमारी स्थानीय मशीन पर ट्रैक करने के लिए सेट नहीं किए गए थे। वहां से, चूंकि अब हमारे पास रिमोट शाखा से रिफ्रेंस है, इसलिए हम आसानी से दौड़ सकते हैं git checkout remote_branch और हम रिमोट ट्रैकिंग के लाभ प्राप्त करेंगे।


395
2017-12-07 20:52



यदि आपके पास स्थानीय रूप से एक अलग शाखा है तो मैं एक नोट जोड़ूंगा: सुनिश्चित करें कि आपने इसे 'गिट रिमोट एड मूल [the_path_to_your_repo / repo_name.git]' का उपयोग कर रिमोट रेपो के साथ जोड़ा है। फिर 'गिट फ़ेच मूल' का उपयोग करें जहां 'मूल' का मतलब मूल भंडार है जिसका आपने सहयोग किया है। - elliotrock
git checkout -b newbranch वर्तमान शाखा के आधार पर 1-चरणीय निर्माण और चेकआउट के लिए भी बहुत अच्छी काम करता है। - Linus
मुझे लगता है कि यह सबसे अद्यतित है (यह $ @ #! बदल रहा है!)। गिट 2.5.5 मुझे वास्तव में एकमात्र रास्ता मिला देख रिमोट शाखाएं थीं git ls-remote और वास्तव में एक का उपयोग करने का एकमात्र तरीका है git checkout -b [branch] --track [remote/branch]...और वह है बाद  git pull [remote] [branch] काम किया। यानी, यह वास्तव में पूरी शाखा खींच लिया, लेकिन अभी भी इसे सूचीबद्ध नहीं करेगा। - delicateLatticeworkFever
और जब यह उत्तर या तो काम नहीं करता है, तो देखें यह वाला। - eis


मैंने उपरोक्त समाधान की कोशिश की, लेकिन यह काम नहीं किया। इसे आज़माएं, यह काम करता है:

git fetch origin 'remote_branch':'local_branch_name'

यह रिमोट शाखा लाएगा और नाम के साथ एक नई स्थानीय शाखा (यदि पहले से मौजूद नहीं है) बनायेगा local_branch_nameऔर इसमें रिमोट एक को ट्रैक करें।


176
2017-10-18 05:55



यह मेरे लिए काम करता था जब न तो गिट लाइक मूल या गिट रिमोट अपडेट ने स्थानीय शाखाएं बनाई थीं। मुझे यकीन नहीं है क्यों। - Godsmith
नई शाखा बनाने के लिए रिमोट शाखा (मास्टर नहीं) का उपयोग करने के लिए मुझे जो चाहिए वह पूरा करने का यह सबसे सीधा तरीका था। - Roralee
निर्बाध रूप से काम किया, विशेष रूप से जब कई शाखाओं के साथ एक रिमोट से एक शाखा को क्लोन किया गया। - Alex C
यह मेरे लिए भी काम करता था, जहां स्वीकार किए गए उत्तर और अन्य उच्च वोट नहीं थे। मेरा गिट संस्करण 2.5.0 है - pdepmcp
क्या किसी को कोई विचार है कि यह क्यों काम करता है जब बाकी सब कुछ नहीं करता है? (मैं गिट 2.13.0 पर हूँ) - Nathan Arthur


यह करेगा DWIM रिमोट नामित मूल के लिए (प्रलेखन):

$ git checkout -t remote_name/remote_branch

एक नया रिमोट जोड़ने के लिए, आपको पहले निम्नलिखित करना होगा:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

सबसे पहले गिट रिमोट मौजूद है, दूसरा दूसरा काम करता है।


100
2018-04-27 22:37





उपयोग:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

अन्य जवाब मेरे सौम्य मामले में आधुनिक गिट के साथ काम नहीं करते हैं। रिमोट शाखा नई है, तो आपको पहले खींचने की आवश्यकता हो सकती है, लेकिन मैंने उस मामले की जांच नहीं की है।


89
2018-02-21 10:58



क्या आपको एहसास है कि यह इसका एक निकास है उत्तर - Thomas Ayoub
अब इसे देख रहे हैं, वे ओवरलैप करते हैं। केवल मेरा संक्षिप्त है और आपको बताता है कि कहानी कहने के बजाय क्या करना है। मुझे लगता है कि यह अधिक उपयोगी हो सकता है, खासकर आजकल गिट संस्करणों के लिए। यदि आपको लगता है कि यह एक बुरा जवाब है तो आप इसे कम कर सकते हैं। - matanster


एक गिट भंडार क्लोन करने के लिए, करें:

git clone <either ssh url /http url>

उपरोक्त आदेश सभी शाखाओं की जांच करता है, लेकिन केवल master शाखा शुरू की जाएगी। यदि आप अन्य शाखाओं को चेकआउट करना चाहते हैं, तो करें:

git checkout -t origin/future_branch (for example)

यह आदेश रिमोट शाखा की जांच करता है, और आपका स्थानीय शाखा नाम दूरस्थ शाखा के समान होगा।

यदि आप चेकआउट पर अपने स्थानीय शाखा नाम को ओवरराइड करना चाहते हैं:

git checkout -t -b enhancement origin/future_branch

अब आपकी स्थानीय शाखा का नाम है enhancement, लेकिन आपकी रिमोट शाखा का नाम है future_branch

प्रलेखन


45
2018-01-21 10:04



गिट क्लोन <या तो ssh url / http url> - मेरे लिए पूरी तरह से काम करता है - Kmeixner
हाँ आप सही हैं। आपकी जानकारी के लिए धन्यवाद, मैं इसे जल्द ही @warvariuc अपडेट कर दूंगा - Madhan Ayyasamy
अगर रिमोट नहीं है master, यह काम नहीं करेगा। - polkovnikov.ph