मैं एक दूरस्थ गिट शाखा की जांच कैसे करूं?


6711

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

अब मैं दूरस्थ testशाखा की जाँच करने की कोशिश कर रहा हूँ ।

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

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

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

मैं एक दूरस्थ गिट शाखा की जांच कैसे करूं?


9
@िंगर लेकिन इसमें नई स्थानीय शाखा का नाम बदलने की संभावना शामिल नहीं है (यदि आप बाद में
अपसेट

15
मुझे लगता है कि यह धागा अनहेल्दी है। काम करने के लिए कुछ भी नहीं लगता है, मूल प्रश्न कई उत्तरों में खो गया है। मैंने हर शब्द पढ़ा है, नीचे सब कुछ करने की कोशिश की है, और ओपी क्या करना चाहता है, इसके बारे में कोई विचार नहीं है।
टोनी एननिस

6
Git कमांड के साथ शुरू करने के लिए सहज नहीं हैं, हाल के संस्करणों के साथ शुरू किए गए परिवर्तनों को मिश्रण में जोड़ें और आपके पास यह पृष्ठ है ...
Christophe Roussy

14
मुझे लगता है कि मैं पागल गोलियाँ ले रहा हूँ। मैं एक शाखा से चेकआउट करने की कोशिश कर रहा हूं upstream, न कि सिर्फ originऔर हर अनुशंसित उत्तर दूरस्थ रूप से सहायक (दंड-संबंधी) कुछ भी नहीं करता है। EDIT - मुझे क्षमा करें, शीर्ष 2 उत्तरों में शामिल सुझावों की भीड़ बेकार थी; 3 एक ( git branch test origin/test) क्या काम करता है। खुशी है कि शीर्ष 2 में 20x वोट हैं ...
dwanderson

4
हो सकता है कि आपके पास अपने काम के पेड़ में 'परीक्षण' नामक एक फाइल हो, विस्तार के लिए stackoverflow.com/a/45006389/792416 देखें ।
वृद्ध

जवाबों:


9149

अपडेट करें

जैकब का जवाब वास्तव में इस पर सुधार करता है। जीआईटी संस्करण 1.6.6 के साथ, केवल एक रिमोट के साथ, आप बस कर सकते हैं:

git fetch
git checkout test

जैसा कि उपयोगकर्ता masukomi एक टिप्पणी में बताते हैं, git checkout testअगर आपके पास कई रीमोट हैं, तो आधुनिक git में काम नहीं करेंगे। इस मामले में उपयोग करें

git checkout -b test <name of remote>/test

या आशुलिपि

git checkout -t <name of remote>/test

पुराना उत्तर

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

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

git fetch origin

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

git branch -v -a

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

git checkout -b test origin/test

398
इस पर विस्तार करने के लिए: git आपको किसी और की शाखाओं पर काम करने की अनुमति नहीं देता है। आप केवल अपने दम पर काम कर सकते हैं। इसलिए यदि आप किसी और की शाखा में जोड़ना चाहते हैं, तो आपको उस शाखा की अपनी "प्रतिलिपि" बनाने की आवश्यकता है, जो उपरोक्त कमांड करता है (ठीक है, यह आपकी शाखा बनाता है और इसकी जांच करता है, भी)।
डैन मोल्डिंग

139
यदि यह एक नई दूरस्थ शाखा है, तो आपको ऐसा करने से git fetchपहले इसकी आवश्यकता हो सकती है ताकि git के बारे में पता चलेorigin/test
नील सरकार

56
... और आप के साथ ऐसा होता हैgit fetch origin test
एंड्रयू

22
त्रुटि: "गिट चेकआउट: अपडेटिंग पथ स्विचिंग शाखाओं के साथ असंगत है। क्या आपने चेकआउट करने का इरादा किया है origin/testजो प्रतिबद्ध के रूप में हल नहीं किया जा सकता है?"
Xeoncross

85
git checkout testयदि आपके पास एक से अधिक शाखाएँ हैं जिनके समान नाम हैं तो आधुनिक git में काम नहीं करेंगे । यह पता नहीं है कि किसका उपयोग करना है।
मैसुकोमी

1256

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

git checkout test

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


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

git checkout -b test HEAD

** EDIT (संपादक नहीं लेखक द्वारा ) **

मुझे नीचे एक टिप्पणी मिली जो इस उत्तर का आधुनिकीकरण करती प्रतीत होती है:

@ डेनिस: git चेकआउट, उदाहरण के लिए git चेकआउट उत्पत्ति / परीक्षण के परिणाम अलग-अलग HEAD / अनाम शाखा में, जबकि git चेकआउट परीक्षण या git चेकआउट -b परीक्षण मूल / स्थानीय शाखा परीक्षण में परीक्षण के परिणाम / अपस्ट्रीम के रूप में दूरस्थ-ट्रैकिंग परीक्षण / परीक्षण के परिणाम। ) - जकुब नारबस्की 9 जनवरी 14 '8:17 पर

को महत्व git checkout origin/test


33
अप्रत्याशित, लेकिन यह संस्करण पिछले कुछ वर्षों में जारी किया गया है - इस वाक्यविन्यास को जानने से बहुत समय बच सकता है क्योंकि अभी भी बहुत सारे पुराने दस्तावेज हैं और टिप्पणी के धागे तैर रहे हैं जो ऐसा करने के लिए पुराने तरीके का सुझाव देते हैं।
कर्टिस

10
"आधुनिक गिट" - रिकॉर्ड के लिए, (लगभग) आप किस संस्करण का उल्लेख कर रहे हैं? कभी-कभी हमें पुराने डिस्टरो को चलाने वाले सिस्टम पर काम करना पड़ता है।
क्रेग मैकक्यून

5
इस संदर्भ में "आधुनिक गिट" जीआईटी 1.6.6 है
बॉबी नॉर्टन

10
@ पेडन अगर आपको कोई प्रतिक्रिया मिलती है, error: pathspec 'branch_name' did not match any file(s) known to git.तो आपको पहले एक जीआईटी लाने का काम करना चाहिए।
डेनिस

6
Git संस्करण 1.8.3.msysgit.0 का उपयोग करना और यह मेरे लिए काम नहीं करता है - git के लिए ज्ञात किसी भी फ़ाइल (s) से मेल नहीं खाता है - मैंने कई git
fetch किए हैं

563

इस स्थिति में, आप संभवतः एक स्थानीय testशाखा बनाना चाहते हैं जो दूरस्थ testशाखा पर नज़र रख रही है :

$ git branch test origin/test

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


15
यह बिना स्विच किए स्थानीय शाखा बनाएगा।
एलेक्स स्क्रीपनीक

2
यद्यपि मुझे घातक: अस्पष्ट वस्तु का नाम: 'मूल / देव' - जहां मूल पर एक शाखा 'देव' मौजूद है - लेकिन मैंने गलती से अपनी मशीन पर "मूल / देव" नामक एक शाखा बनाई (मेरे पिछले बेवकूफ प्रयासों में) यह अधिकार पाने के लिए, कोई शक नहीं) ... ouch
पांडावुड

1
यह मुझे त्रुटि त्रुटि दे रहा है: संकेत करने के लिए कुछ रेफरी पुश करने में विफल: अपडेट अस्वीकार कर दिया गया क्योंकि एक धक्का दिया शाखा टिप अपने दूरस्थ संकेत के पीछे है: समकक्ष। इस शाखा को देखें और फिर से धकेलने से पहले दूरस्थ परिवर्तन संकेत को मर्ज करें: (जैसे 'गिट पुल')। संकेत: विवरण के लिए 'git push-help' में 'फास्ट-फॉरवर्ड के बारे में नोट' देखें।
pal4life

475

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

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

$ git checkout -b remote_branch origin/remote_branch

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

समाधान

यदि आप इस संदेश को प्राप्त करते हैं, तो आपको पहले एक ऐसा करना होगा 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और हम रिमोट ट्रैकिंग के लाभों को प्राप्त करेंगे।


2
यदि आपके पास स्थानीय रूप से एक अलग शाखा है, तो मैं एक नोट जोड़ूंगा: सुनिश्चित करें कि आपने इसे 'रिमोट रिमोट ऐड ओरिजिन [the_path_to_your_repo / repo_name.git]' का उपयोग करके रिमोट रेपो के साथ जोड़ा है। फिर 'git fetch उत्पत्ति' का उपयोग करें जहाँ 'मूल' का अर्थ है उस मूल रिपॉजिटरी से जिसका आपने संबंध बनाया है।
elliotrock

git checkout -b newbranch1-स्टेप बनाने और वर्तमान शाखा के आधार पर एक नई शाखा की जाँच करने के लिए भी बढ़िया काम करता है।
लाइनस

2
मुझे लगता है कि यह सबसे अद्यतित है (यह $ @ #! आईएनजी बदल रहा है!)। Git 2.5.5 मुझे वास्तव में दूरस्थ शाखाओं को देखनेgit ls-remote का एकमात्र तरीका मिला और वास्तव में एक का उपयोग करने का एकमात्र तरीका है git checkout -b [branch] --track [remote/branch]... और इसके बाद git pull [remote] [branch] काम किया गया। यानी, यह वास्तव में पूरी शाखा को खींचता है, लेकिन फिर भी इसे सूचीबद्ध नहीं करेगा।
delicateLatticeworkFever

और जब यह उत्तर या तो काम नहीं करता है, तो इसे देखें ।
आईस

बस जोड़ने के लिए, यदि आप git fetch other_remote only_branch, आप अभी भी fatalत्रुटि प्राप्त करते हैं । आपको git fetch other_remoteशाखा नाम के बिना होना चाहिए। अजीब डिजाइन।
est

258

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

git fetch origin 'remote_branch':'local_branch_name'

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


37
यह मेरे लिए तब काम आया जब न तो git लाने के मूल और git के रिमोट अपडेट ने स्थानीय शाखाओं को बनाया। मुझे यकीन नहीं है कि क्यों।
गॉडस्मिथ

4
यह एक बहुत ही सीधा तरीका था जिसे पूरा करने के लिए मुझे एक नई शाखा बनाने के लिए दूरस्थ शाखा (मास्टर नहीं) का उपयोग करने की आवश्यकता थी।
रोराले

7
मूल रूप से काम किया जाता है, खासकर जब एक शाखा से कई शाखाओं वाले रिमोट से क्लोन किया जाता है।
एलेक्स सी।

7
इसने मेरे लिए भी काम किया, जहाँ स्वीकृत उत्तर और अन्य उच्च मतदान नहीं हुए। मेरा git संस्करण 2.5.0 है
pdepmcp

5
किसी को भी पता नहीं क्यों यह काम करता है जब सब कुछ नहीं करता है? (मैं 2.13.0 git पर हूं)
नाथन आर्थर

108

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

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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


104

उपयोग:

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

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


2
क्या आपको एहसास है कि यह इस जवाब
थॉमस अय्यूब

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

1
git fetch सुरक्षित विकल्प है। पुल का उपयोग करने से पहले लाने की कोशिश करें। दोनों दूरस्थ सामग्री डाउनलोड करते हैं, लेकिन जब स्थानीय स्थिति नहीं बदलती है, तो पुल तुरंत स्थानीय स्थिति को बदल देगा।
पीटर शेजय

89

ठीक है , जवाब आसान है ... आप मूल रूप से शाखा देखते हैं, लेकिन आपके पास अभी तक एक स्थानीय प्रतिलिपि नहीं है! ...

आपको fetchशाखा की आवश्यकता है ...

आप बस शाखा में जा सकते हैं और फिर चेकआउट कर सकते हैं, ऐसा करने के लिए नीचे एक पंक्ति कमांड का उपयोग करें:

git fetch && git checkout test

मैंने अंतर साझा करने के लिए आपके लिए नीचे की छवि भी बनाई है, देखें कि कैसे fetchकाम करता है और यह भी कि यह कैसे अलग है pull:

git fetch


@DmitriZaitsev हां, यह काम करेगा, अगर रिमोट ब्रांच है, और आप करते हैं, तो आपको ब्रांच लोकल मिल जाएगी ... git fetch && git checkout test..So यह काम करता है, जब तक कि कोई रिमोट ब्रांच न हो, लेकिन सवाल यह कहते हुए कि वहाँ पहले से ही एक दूरस्थ शाखा है ...
Alireza

जिस तरह से मैं प्रश्न देखता हूं, वह testएक नई शाखा की तरह दिखता है, इसलिए यह स्थानीय रूप से मौजूद होने की संभावना नहीं है। अन्यथा आप इसे सिंगल git pullकमांड से आसान बना सकते हैं ।
दिमित्री ज़ैतसेव

@DmitriZaitsev, हाँ, इसीलिए मैंने कहा है कि git fetch, कि दूरस्थ शाखाओं के लिए जाँच करें, जो अभी बनाई गई है, पुल अन्य अवांछित सामान ला सकती है, लेकिन अगर आप पहले से ही स्थानीय रूप से रेपो है तो सभी शाखाएँ उपलब्ध
कराती हैं

नहीं होगा fetchबिना pullप्राप्त किए गए कॉपी में छुट्टी परिवर्तन लेकिन स्थानीय शाखा में नहीं, अपने स्थानीय शाखा के प्रमुख के लिए अप करने की तारीख नहीं किया जा रहा?
दिमित्री ज़ैतसेव

56

Git रिपॉजिटरी को क्लोन करने के लिए, करें:

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

प्रलेखन


Git क्लोन <या तो ssh यूआरएल / http URL> - मेरे लिए पूरी तरह से काम करता है
Kmeixner

हाँ आप सही हैं। आपकी जानकारी के लिए धन्यवाद, मैं इसे जल्द ही अपडेट करूंगा @warvariuc
Madhan

यदि रिमोट के पास नहीं है master, तो यह काम करने वाला नहीं है।
polkovnikov.ph

36

तुम कोशिश कर सकते हो

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

या

git fetch
git checkout -b local_branch_name origin/branch_name

2
FYI, --trackgit के नए संस्करणों में अब आवश्यक नहीं है, क्योंकि यह डिफ़ॉल्ट रूप से सेट है, जैसा कि इस पहले उत्तर में बताया गया है ।

33

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

git fetch # अगर आपको शाखा के नाम के बारे में पता नहीं है

git fetch origin branch_name

दूसरा, आप अपने स्थानीय में दूरस्थ शाखा की जाँच कर सकते हैं:

git checkout -b branch_name origin/branch_name

-b आपके चयनित दूरस्थ शाखा से निर्दिष्ट नाम में नई शाखा बनाएगा।


मुझे समझ में नहीं आता-बी। यदि आप "git चेकआउट मास्टर" कर सकते हैं तो आप "git चेकआउट उत्पत्ति / परीक्षण" क्यों नहीं कर सकते?
जॉन लिटिल

-ब नई शाखा के लिए जो मूल / मास्टर से है
मोहिद्दीन बिन मोहम्मद

28

मैं निम्नलिखित कमांड का उपयोग करता हूं:

git checkout --track origin/other_remote_branch

13
यह उत्तर बहुत अधिक उपयोगी होगा यदि आप बताएं कि आप इसे इस तरह क्यों उपयोग कर रहे हैं। यानी किसी को '--ट्रैक' का इस्तेमाल क्यों करना चाहिए ...
मैट फ्रीडमैन

27

आदेश

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

के बराबर हैं

 git fetch --all

और फिर

 git checkout -b fixes_for_dev origin/development

दोनों एक latest fixes_for_devसे बनाएंगेdevelopment


24

यदि शाखा originरिमोट के अलावा किसी अन्य चीज़ पर है, तो मुझे निम्न कार्य करना पसंद है:

$ git fetch
$ git checkout -b second/next upstream/next

यह रिमोट nextपर शाखा को upstreamस्थानीय शाखा में चेकआउट करेगा जिसे कहा जाता है second/next। जिसका मतलब है कि यदि आपके पास पहले से ही एक स्थानीय शाखा है जिसका नाम अगले है तो यह संघर्ष नहीं करेगा।

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next


18

इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया। यह काम किया:

git checkout -b feature/branch remotes/origin/feature/branch


1
धन्यवाद। मैं सोच रहा था कि क्या मुझे पूर्ण पथ ( रिमोट / मूल / फीचर / शाखा ) का उपयोग करना था, जिसे मैंने कमांड gitकॉल करते समय देखा git branch -aथा, लेकिन मैं निश्चित नहीं था, इसलिए मैंने बस उपयोग किया git checkout -b apps/FEATURE/branch origin/apps/FEATURE/branchऔर यह काम करने के लिए प्रकट हुआ। संदेश:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
क्रिस

18

मैं error: pathspec 'desired-branch' did not match any file(s) known to git.उपरोक्त सभी सुझावों को देखने की स्थिति में फंस गया था । मैं git संस्करण 1.8.3.1 पर हूं।

तो यह मेरे लिए काम किया :

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

इसके पीछे की व्याख्या यह है कि मैंने देखा है कि दूरस्थ शाखा लाने के दौरान, इसे FETCH_HEAD में लाया गया था:

$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD

17

बस git checkoutरिमोट शाखा के नाम के साथ चलाते हैं । Git स्वचालित रूप से एक स्थानीय शाखा बनाएगा जो रिमोट को ट्रैक करता है:

git fetch
git checkout test

हालाँकि, यदि उस शाखा का नाम एक से अधिक रिमोट में पाया जाता है, तो यह काम नहीं करेगा क्योंकि Git को पता नहीं है कि किसका उपयोग करना है। उस स्थिति में आप या तो उपयोग कर सकते हैं:

git checkout --track origin/test

या

git checkout -b test origin/test

में 2.19 , Git सीखा checkout.defaultRemoteविन्यास, जो जब इस तरह के एक अस्पष्टता को दूर करने के लिए डिफ़ॉल्ट करने के लिए एक दूरस्थ निर्दिष्ट करता है।


16

git branch -rऑब्जेक्ट नाम अमान्य है, क्योंकि वह शाखा का नाम Git की स्थानीय शाखा सूची में नहीं है। मूल से अपनी स्थानीय शाखा सूची को अपडेट करें:

git remote update

और फिर अपनी दूरस्थ शाखा को फिर से जाँचने का प्रयास करें।

इसने मेरे लिए काम किया।

मेरा मानना git fetchहै कि सभी दूरस्थ शाखाओं में खींचतान है , जो कि मूल पोस्टर नहीं चाहता था।


2
FYI करें, git remote update सभी दूरस्थ शाखाओं को भी लाएगा

13

git remote show <origin name>आदेश (अन-ट्रैक शाखाएं शामिल हैं) सभी शाखाओं सूची जाएगा। फिर आपको दूरस्थ शाखा का नाम मिल सकता है जिसे आपको लाने की आवश्यकता है।

उदाहरण:

$ git remote show origin

दूरस्थ शाखाओं को लाने के लिए इन चरणों का उपयोग करें:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

उदाहरण:

$ git fetch origin test:test
$ git checkout test

@hallski ने 2.15.1 वर्जन के काम नहीं करने का जवाब दिया लेकिन मेरे पास .It फ़ाइल वीजीएल क्लोन की केवल 1 ब्रांच है और - डेप्थ फ्लैग के साथ इतिहास को फ़िल्टर किया है। उदाहरण के लिए $ git clone -b release --single-branch --depth 5 https://github.com/user/repo.gitWron't जानकारी $ git remote show originयह एकल शाखा क्लोन रिपोजिटरी के साथ सभी दूरस्थ शाखा को सूचीबद्ध नहीं करता है।
Qh0stM4N

10

दूरस्थ से लाएं और शाखा की जांच करें।

git fetch <remote_name> && git checkout <branch_name> 

उदाहरण के लिए:

git लाने का मूल और & git चेकआउट सुविधा / XYZ-1234-Add-अलर्ट


9

अन्य लोग और गल्स समाधान देते हैं, लेकिन शायद मैं आपको बता सकता हूं कि क्यों।

git चेकआउट टेस्ट जो कुछ नहीं करता है

Does nothingबराबर नहीं है doesn't work, इसलिए मुझे लगता है कि जब आप अपने टर्मिनल में 'गिट चेकआउट टेस्ट' टाइप करते हैं और एंटर की दबाते हैं, तो कोई संदेश नहीं आता है और कोई त्रुटि नहीं होती है। क्या मैं सही हू?

यदि उत्तर 'हां' है, तो मैं आपको इसका कारण बता सकता हूं।

कारण यह है कि आपके काम के पेड़ में 'परीक्षण' नाम की एक फ़ाइल (या फ़ोल्डर) है।

जब git checkout xxxपार्स किया,

  1. Git xxxपहली बार एक शाखा के नाम के रूप में दिखता है , लेकिन परीक्षण नाम की कोई शाखा नहीं है।
  2. फिर गिट सोचता xxxहै कि एक रास्ता है, और सौभाग्य से (या दुर्भाग्य से), एक फ़ाइल है जिसका नाम परीक्षण है। तो फ़ाइल git checkout xxxमें किसी भी संशोधन को छोड़ दें xxx
  3. यदि कोई फ़ाइल xxxया तो नाम नहीं है, तो Git xxxकुछ नियमों के अनुसार बनाने की कोशिश करेगा । नियमों में से एक मौजूद एक शाखा है जिसका नाम xxxयदि remotes/origin/xxxमौजूद है।

धन्यवाद, यह पता लगाने की कोशिश करते रहे कि git कुछ भी क्यों नहीं कर रहा था।
माइक आर

8

नई निर्मित शाखाएँ प्राप्त करने के लिए

git fetch

दूसरी शाखा में जाने के लिए

git checkout BranchName

6

आप निम्नलिखित बैश स्क्रिप्ट के साथ सभी दूरस्थ शाखाओं को ट्रैक करना शुरू कर सकते हैं:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

यहाँ भी एक एकल-पंक्ति संस्करण है:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;

5

git checkout -b "Branch_name" [B का अर्थ है स्थानीय शाखा बनाएँ]

गिट शाखा - लंबा

git checkout -b "आपकी शाखा का नाम"

गिट शाखा

सफलतापूर्वक मास्टर शाखा से देव शाखा के लिए चेकआउट

यहां छवि विवरण दर्ज करें


git checkout -b "Branch_name" [B का अर्थ है स्थानीय शाखा बनाएँ]
केशव गेरा

3

सभी दूरस्थ शाखाओं को इसका उपयोग करने के लिए:

git fetch --all

फिर शाखा को चेकआउट करें:

git checkout test

2

fetchअपने सभी रिमोट को खींचने के लिए उपयोग करें

   git fetch --all

दूरस्थ शाखाओं को सूचीबद्ध करने के लिए:

   git branch -r

अपनी सभी शाखाओं की सूची के लिए

   git branch -l
   >>outpots like-
     * develop
       test
       master

किसी शाखा की जाँच / परिवर्तन के लिए

   git checkout master

कोशिश की गई git branch -lऔर कोई दूरस्थ शाखा नहीं दिखाई गई।
दिमित्री ज़ैतसेव

उपयोग git pull --allयाgit fetch --all
नासिर खान

हां, और उसके बाद, git branch -l अभी भी केवल स्थानीय शाखाओं को दर्शाता है । ऐसा लगता है कि इसके git branchबिना ठीक काम हो रहा है -l, तो इसका कारण क्या है -l?
दिमित्री जैतसेव

इसके अलावा आपका जवाब सवाल का जवाब नहीं देता है - masterएक दूरस्थ शाखा नहीं है।
दिमित्री जैतसेव

-lसूची के लिए झंडा। आप उपयोग कर सकते हैं --listभी
नासिर खान

2

हमारे लिए, ऐसा लगता है कि remote.origin.fetchकॉन्फ़िगरेशन ने एक समस्या दी। इसलिए, हम किसी भी अन्य दूरस्थ शाखाओं की तुलना में नहीं देख सकते थे master, इसलिए git fetch [--all]मदद नहीं की। न तो काम किया git checkout mybranchऔर न ही git checkout -b mybranch --track origin/mybranch, हालांकि यह निश्चित रूप से रिमोट पर था।

पिछला कॉन्फ़िगरेशन केवल प्राप्त masterकरने की अनुमति है:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

*मूल से नई जानकारी का उपयोग करके इसे ठीक करें :

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

अब हम git checkoutस्थानीय रूप से रिमोट ब्रांच कर सकते थे।

पता नहीं कैसे यह विन्यास हमारे स्थानीय रेपो में समाप्त हो गया।


1
यह मेरे लिए इसे हल कर दिया क्योंकि मैंने
पोंटस होलबोम

2

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

उदाहरण के लिए, मैंने एक दूरस्थ शाखा की जांच करने की कोशिश की जिसका नाम है, #9773लेकिन कमांड ठीक से काम नहीं करता है, जैसा कि नीचे दी गई तस्वीर में दिखाया गया है:

यहां छवि विवरण दर्ज करें

किसी कारण से मुझे आश्चर्य होता है कि अगर तेज प्रतीक (#) के साथ कुछ करना हो सकता है, और फिर मैंने शाखा के नाम को सिंगल कोट्स से घेरने की कोशिश की, जैसे '#9773'रैथेन #9773, और सौभाग्य से यह ठीक काम किया।

$ git checkout -b '#9773' origin/'#9773'

कई यूनिक्स गोले में #चरित्र को टिप्पणियों के लिए उपयोग किया जाता है इसलिए #वसीयत को अनदेखा करने के बाद कुछ भी । यह एक खोल की चीज है और कुछ विशिष्ट नहीं है। #पर्याप्त होने से पहले एक बैकस्लैश के उद्धरण का उपयोग करना चाहिए।
पौलो स्कार्डिन

1

कृपया खाली फोल्डर बनाने के लिए कमांड का पालन करें। इसे दर्ज करें और इस कमांड का उपयोग करें:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.