गिट का उपयोग करके एक विशिष्ट शाखा लाएं


19

मैं xilinx विकी में वर्णित git का उपयोग करके मास्टर-अगली शाखा से स्रोत कोड डाउनलोड करना चाहता हूं ।

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

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

यहां तक ​​कि यह विफल रहा:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

जो कमांड काम करता है:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

लेकिन मुझे कैसे पता चलेगा कि यह वास्तव में मास्टर-अगली शाखा को प्राप्त करेगा और मास्टर शाखा को नहीं ? मैं सही तरीके से गिट का उपयोग करके एक विशिष्ट शाखा कैसे प्राप्त करूं?

मैं RHT 6 का उपयोग कर रहा हूँ, PuTTY के माध्यम से पहुँचा।

जवाबों:


16

जैसे त्रुटि संदेश आपको बताता है, git cloneएक गिट रिपॉजिटरी की अपेक्षा करता है। आप उस तरह से पथ में एक शाखा का नाम "जोड़" नहीं सकते। Git में शाखाएँ देखें ।

आप एक ही शाखा को क्लोन कर सकते हैं (और यह इतिहास है): git clone <url> --branch <branch> --single-branch

देखते हैं git help clone

लेकिन आपके द्वारा चलाए गए क्लोन कमांड ने आपको संपूर्ण रिपॉजिटरी की एक प्रति दी है, आप मौजूदा शाखाओं के साथ git branchऔर उनके बारे में अधिक विवरण देख सकते हैं git show-branch

अपनी इच्छित शाखा पर स्विच करें git checkout branch-name

प्रो गिट बुक के पहले अध्याय (ऑनलाइन उपलब्ध) मूल आदेशों पर अधिक विवरण देते हैं।


"क्लोन कमांड जिसे आपने चलाया था, आपको पूरे रिपॉजिटरी की एक प्रति दी गई थी"। सभी रिपॉजिटरी का अर्थ है कि दोनों शाखाएं विलय हो गईं?
user2799508

नहीं, वे विलय नहीं हैं। Git में एक शाखा संपूर्ण निर्देशिका की प्रतिलिपि नहीं है, जैसा कि यहाँ बताया गया है
लेईज

मैंने यह क्या किया है: "git क्लोन -b मास्टर-अगला github.com/Xilinx/u-boot-xlnx.git " क्या यह सही नहीं है?
user2799508

अब आपको क्लोन की आवश्यकता नहीं है। आपके द्वारा अपने प्रश्न में दिखाए गए आदेश ने आपको सभी शाखाओं के साथ भंडार दिया। लेकिन यह सही भी है। यह git checkout master-nextक्लोनिंग के बाद करने के बराबर है ।
लियाज

13

यह आदेश काम करना चाहिए:

$ git fetch origin [branch]

उपरोक्त कमांड केवल दूरस्थ रिपोजिटरी से मेटाडेटा प्राप्त करता है, यह स्रोतों को मर्ज नहीं करता है।

यदि आप स्रोतों को लाना और मर्ज करना चाहते हैं, तो कमांड होगी:

$ git pull origin [branch]

उस शाखा से सावधान रहें जहाँ आप मर्ज कमांड निष्पादित कर रहे हैं। यह वह जगह होगी जहां स्रोतों का विलय किया जाता है।


आपका उत्तर तकनीकी रूप से सही है लेकिन मुझे लगता है कि यह कुछ व्याकरणिक जाँच / पुनः लेखन से लाभान्वित हो सकता है।
सामी Laine

यह अच्छी तरह से thx
nwgat

4

गिट रिपॉजिटरी में सभी शाखाएं होती हैं (लेकिन संपीड़ित और केवल अंतर इसलिए शायद ही कभी एक आकार का मुद्दा होता है)।

इसलिए, आप पूरी परियोजना को क्लोन कर सकते हैं जैसा आपने सफलतापूर्वक किया है। यह एक रिपॉजिटरी प्राप्त करने का एक मानक तरीका है, भले ही आप केवल एक शाखा में रुचि रखते हों।

.It संरचना तब उस भंडार पर की गई सभी शाखाओं को शामिल करेगी ।

एक विशिष्ट शाखा का उपयोग करने के लिए git checkout [branch_name] यदि शाखा मौजूद है तो फाइलें स्थानीय रूप से उपलब्ध कराई जाएंगी (जैसा कि परियोजना निर्देशिका में वर्तमान फाइलें हैं)।

git status फिर दिखाएगा कि कौन सी शाखा वर्तमान शाखा है, उदाहरण के लिए:

Leiaz के अनुसार कोई एक विशिष्ट शाखा को क्लोन कर सकता है। व्यवहार में, मैंने ऐसा कभी नहीं किया है या दूसरों को इसका उपयोग करते देखा है। आगे के शोध पर, मैं देख रहा हूं कि यह अपेक्षाकृत नया है, git 1.7.10 (अप्रैल 2012) में जोड़ा गया है: 'git क्लोन सीखा - सिंगल्स-ब्रांच' विकल्प को क्लोनिंग को सिंगल ब्रांच तक सीमित करने के लिए (आश्चर्य!)। वे टैग जो शाखा के इतिहास में इंगित नहीं होते हैं। उदाहरण के लिए:

git clone -b master-next --single-branch git://github.com/Xilinx/

यहां छवि विवरण दर्ज करें यहाँ, मेरे "लिंकर" आवेदन के लिए मैं शाखा की जाँच कर रहा हूँ v3.0.10


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