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





13 Answers

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

git checkout test

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

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

git checkout -b test HEAD
git git-checkout remote-branch

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

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

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

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

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

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




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

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

$ git checkout -b remote_branch origin/remote_branch

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

उपाय

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

$ 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 , इसलिए हम आसानी से git checkout remote_branch चला सकते हैं और हम रिमोट ट्रैकिंग के लाभ प्राप्त करेंगे।




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

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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




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

आपको शाखा fetch की जरूरत है ...

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

git fetch && git checkout test

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




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

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

या

git fetch
git checkout -b local_branch_name origin/branch_name



आदेश

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

दोनों development से latest fixes_for_dev




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

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

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

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



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

git remote update

और फिर अपनी रिमोट शाखा को दोबारा जांचने का प्रयास करें।

यह मेरे लिए काम किया।

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




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



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

#!/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 ;



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

git fetch
git checkout test

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

git checkout --track origin/test

या

git checkout -b test origin/test

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




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

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

git fetch origin && git checkout branch_name 

पीछे स्पष्टीकरण यह है कि मैंने देखा है कि रिमोट शाखा लाने पर, इसे FETCH_HEAD पर लाया गया था:

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



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

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

किसी कारण से मुझे आश्चर्य हुआ कि क्या तेज प्रतीक (#) के साथ कुछ करने के लिए कुछ हो सकता है, और फिर मैंने शाखा नाम के आस-पास एक उद्धरण के साथ कोशिश की, जैसे '#9773' 9 773 की तुलना में '#9773' राहेन, और यह ठीक काम करता था।

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





Related