Git वाली ब्रांच को कैसे डाउनलोड करें?


214

मेरे पास GitHub पर होस्ट किया गया एक प्रोजेक्ट है। मैंने एक कंप्यूटर पर एक शाखा बनाई, फिर अपने परिवर्तन को GitHub के साथ धक्का दिया:

git push origin branch-name

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

git pull origin branch-name

... लेकिन यह सब मेरी नई शाखा में बदलाव के साथ मेरी मास्टर शाखा को ओवरराइट कर दिया गया था।

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

जवाबों:


375

संबंधित प्रश्न के लिए धन्यवाद , मुझे पता चला कि मुझे एक नई स्थानीय शाखा के रूप में दूरस्थ शाखा को "चेकआउट" करने की आवश्यकता है, और एक नई शाखा शाखा का नाम निर्दिष्ट करें।

git checkout -b newlocalbranchname origin/branch-name

या आप कर सकते हैं:

git checkout -t origin/branch-name

उत्तरार्द्ध एक शाखा बनाएगा जो दूरस्थ शाखा को ट्रैक करने के लिए भी सेट है।


अपडेट: जब से मैंने मूल रूप से इस प्रश्न को पोस्ट किया है, 5 साल हो गए हैं। मैंने बहुत कुछ सीखा है और तब से सुधार हुआ है। मेरा सामान्य वर्कफ़्लो अब थोड़ा अलग है।

यदि मुझे दूरस्थ शाखाएँ प्राप्त करनी हैं, तो मैं बस चलाता हूँ:

git pull

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

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

अब मेरे नए के बारे में जानते हैं my-bugfix-branch। इस शाखा में जाने के लिए, मैं बस चला सकता हूं:

git checkout my-bugfix-branch

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


मैं जीआईटी 1.7.2.5 का उपयोग कर रहा हूं, और मेरे लिए काम करने वाली कमांड थी git branch --track XX origin/XX:। आपकी आज्ञा मुझे एक त्रुटि देती है।
dimitarvp

8
यदि आपके पास सभी दूरस्थ शाखाएँ नहीं हैं, तो यह विफल हो सकता है। उन्हें नीचे खींचने के लिए "git रिमोट अपडेट" करें।
बेन वालडिंग

1
वास्तव में, यह "git चेकआउट शाखा-नाम" से भी छोटा हो सकता है। यदि शाखा-नाम रिमोट ट्रैकिंग शाखा (यानी मूल / शाखा-नाम) के समान है, तो यह स्वचालित रूप से एक स्थानीय ट्रैकिंग शाखा है।
डेविड

64

मेरे जैसे किसी Git newbies के लिए, यहां कुछ चरण दिए गए हैं जिन्हें आप एक दूरस्थ रिपॉजिटरी डाउनलोड करने के लिए अनुसरण कर सकते हैं, और फिर उस शाखा पर स्विच करें जिसे आप देखना चाहते हैं। वे शायद गित को किसी तरह से गाली देते हैं, लेकिन इसने मेरे लिए काम किया! :-)

उस रिपॉजिटरी को क्लोन करें जिसे आप कोड डाउनलोड करना चाहते हैं (इस उदाहरण में मैंने जीथ्रू पर LRResty प्रोजेक्ट को चुना है ):

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

जांचें कि आप इस बिंदु पर किस शाखा का उपयोग कर रहे हैं (यह मास्टर शाखा होनी चाहिए):

$ git branch    
* master

अपनी इच्छित शाखा देखें, मेरे मामले में इसे 'संग्रहीत' कहा जाता है:

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

पुष्टि करें कि अब आप अपनी इच्छित शाखा का उपयोग कर रहे हैं:

$ git branch    
* arcified
  master

यदि आप बाद में फिर से कोड अपडेट करना चाहते हैं, तो दौड़ें git pull:

$ git pull
Already up-to-date.

"वे शायद गित को किसी तरह से गाली देते हैं" - नहीं, यह बिल्कुल सही है।
बिग मैकलारेग्यूज 15

28

आप जैसे रिमोट का उपयोग कर सकते हैं:

git fetch origin

और फिर नीचे की तरह दूरस्थ शाखा को ट्रैक करने के लिए एक स्थानीय शाखा सेटअप करें:

git branch --track [local-branch-name] origin/remote-branch-name

अब आपके पास स्थानीय-शाखा-नाम में दूरस्थ गीथूब शाखा की सामग्री होगी।

आप उस स्थानीय-शाखा-नाम पर स्विच कर सकते हैं और काम शुरू कर सकते हैं:

git checkout [local-branch-name]

17

आप उपयोग कर सकते हैं :

git clone <url> --branch <branch>

केवल शाखा की सामग्री को क्लोन / डाउनलोड करने के लिए।

यह मेरे लिए विशेष रूप से उपयोगी था, क्योंकि मेरी शाखा की सामग्री मास्टर शाखा से पूरी तरह से अलग थी (हालांकि यह आमतौर पर ऐसा नहीं है)। इसलिए, ऊपर दूसरों द्वारा सूचीबद्ध सुझावों ने मेरी मदद नहीं की और मैंने शाखा की जाँच करने और एक गिट पुल करने के बाद भी मास्टर की एक प्रति प्राप्त करना समाप्त कर दिया।

यह कमांड आपको सीधे शाखा की सामग्री देगा। इसने मेरे लिए काम किया।


1
यह सबसे अच्छा जवाब है। सरल और प्रभावी।
डेरेक

2
यह मेरे लिए काम नहीं करता है। यह कहते हैं कि उस नाम के पहले से ही एक फ़ोल्डर है (जो कि, निश्चित रूप से, वहाँ है)
जोनाथन तुज़मैन

1
@ जोनाथन यह आपके मौजूदा के साथ एक नई शाखा को अभ्यस्त नहीं करेगा। इसका उपयोग केवल एक ताजा प्रति क्लोन करने के लिए किया जा सकता है। यदि आप पहले से ही रिपॉजिटरी को क्लोन नहीं किया है, तो मुझे इस नाम के साथ एक फ़ोल्डर पहले से ही दिखाई नहीं देना चाहिए। किसी भिन्न स्थान पर क्लोनिंग का प्रयास करें।
पुराने मार्कस

नई शाखा के साथ एक मौजूदा परियोजना को अद्यतन नहीं करता है
चकाचौंध

16

अपनी नई मशीन पर फ़ोल्डर से नेविगेट करें जिसे आप git bash पर git से डाउनलोड करना चाहते हैं।

अपनी पसंद के किसी भी शाखा से कोड डाउनलोड करने के लिए नीचे दिए गए कमांड का उपयोग करें

git clone 'git ssh url' -b 'Branch Name'

यह संबंधित शाखा कोड डाउनलोड करेगा।


9

रेपो नाम में Git क्लोन और सीडी:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

शाखा (एक GitHub पृष्ठ) पर स्विच करें जो मुझे चाहिए:

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

और शाखा खींचें:

$ git pull
Already up-to-date.

ls:

$ ls
index.html      params.json     stylesheets


0

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

git fetch <remoteName> <branchName>

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

git fetch origin MyRemoteBranch

-8

एक नई निर्देशिका बनाएं, और इसके बजाय एक क्लोन करें।

git क्लोन (उत्पत्ति का पता) (शाखा का नाम)


3
आप Git में सिर्फ एक शाखा क्लोन नहीं कर सकते । केवल एक पूर्ण भंडार क्लोन किया जा सकता है।
एलन हाग्गै अलवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.