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


Answers

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

git checkout test

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

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

git checkout -b test HEAD
Question

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

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

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

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

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

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




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

#!/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 fetch # यदि आप शाखा के नाम के बारे में नहीं जानते हैं

git fetch origin branch_name

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

git checkout -b branch_name origin/branch_name

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




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

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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




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

git checkout --track origin/other_remote_branch



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

git clone <either ssh url /http url>

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

git checkout -t origin/future_branch (for example)

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

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

git checkout -t -b enhancement origin/future_branch

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

Documentation




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

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'



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

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

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




यदि शाखा 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 सभी रिमोट शाखाओं में खींचता है, जो मूल पोस्टर नहीं चाहता था।




Related