सवाल एक विशिष्ट गिट शाखा कैसे क्लोन करें? [डुप्लिकेट]


इस प्रश्न का उत्तर यहां दिया गया है:

गिट क्लोन रिमोट वर्तमान कामकाजी शाखा को स्थानीय में कॉपी करने का व्यवहार करेगा।

रिमोट रिपोजिटरी पर शाखाओं को स्विच किए बिना खुद से एक विशिष्ट शाखा क्लोन करने का कोई तरीका है?


2100
2017-12-15 23:06


मूल


@domokun जॉर्ज ने माइकल के एक साल बाद अपना जवाब जोड़ा। तो यह अक्सर एसओ पर होता है कि एक और जवाब पहले से ही स्वीकार कर लिया गया है के बाद सबसे अच्छा जवाब जोड़ा गया है। (IOW, कम से कम किसी भी प्रश्न पर शीर्ष 3-4 उत्तरों को स्कैन करें।) - Ryan Ballantyne
@ एसक्यूड: यदि आप अभी भी एसओ पर हैं, तो क्या आप स्वीकृत उत्तर को ठीक करना चाहते हैं ताकि अन्य इसे आसानी से देख सकें? - mikemaccana
उत्तर को संपादित करने के लिए SO को @Scud की आवश्यकता क्यों है? 5000 वोटों के बाद, सामान्य समुदाय को सही जवाब के रूप में चिह्नित किया जाना चाहिए। - gdbj
स्वीकृत उत्तर कृपया एसओ मॉडरेटर बदलें। - user1271772
स्वीकार्य उत्तर वोट दें। हो सकता है कि एसओ अंततः इसे बदल देगा यदि यह नकारात्मक हो जाता है। - user1271772


जवाब:


कृपया यह भी देखें अन्य जवाब जो कई लोग पसंद करते हैं।

आप यह भी सुनिश्चित करना चाहते हैं कि आप गुस्सा कमेंटर्स और डाउनवॉटर के बहुमत के विपरीत अंतर को समझें। और अंतर है: invoking द्वारा git clone -b branch url आप ला रहे हैं सब शाखाएं और एक की जांच। उदाहरण के लिए, इसका मतलब यह हो सकता है कि आपके भंडार में 5 केबी दस्तावेज या विकी शाखा और 5 जीबी डेटा शाखा है। और जब भी आप अपना फ्रंट पेज संपादित करना चाहते हैं, तो आप 5 जीबी डेटा क्लोनिंग कर सकते हैं।

फिर, यह कहना नहीं है git clone -b इसे पूरा करने का तरीका नहीं है, यह सिर्फ इतना है कि यह नहीं है हमेशा जब आप एक विशिष्ट शाखा क्लोनिंग के बारे में पूछ रहे हैं, तो आप क्या हासिल करना चाहते हैं।

आज का जवाब मैं आज लिखूंगा, आज के दिमाग में दिमाग में होगा

git clone --single-branch -b branch host:/dir.git

नीचे मूल उत्तर लिखने के समय, गिट के पास नहीं था --single-branch विकल्प, लेकिन चलो गुस्से में मधुमक्खियों की पूरी संतुष्टि के लिए इसे संरक्षित करते हैं।

कॉपीपास्टर्स द्वारा इतनी बुरी तरह से नापसंद जवाब यह था:

git init
git remote add -t refspec remotename host:/dir.git
git fetch

240
2017-12-15 23:09



धन्यवाद। मैंने नीचे विधि का उपयोग करके पता लगाया। गिट क्लोन <remote_repo> गिट चेकआउट -b <wanted_branch> मूल / <wanted_branch> गिट शाखा-डी मास्टर - Scud
मुझे ऐसा लगता है, और आपको [रिमोट "मूल"] fetch = + refs / head / (refspec) प्राप्त होगा: fetch = + refs / head / * के बजाय refs / remotes / origin / (refspec): refs / remotes / origin / * - Scud
यह एक आसान और अधिक उपयुक्त है stackoverflow.com/a/4568323/636762 - Syed Rakib Al Hasan
दोस्तों, नीचे असली जवाब देखना सुनिश्चित करें। - BrainSlugs83
@ स्कूड, क्या आप कृपया दूसरे जवाब को स्वीकार कर सकते हैं, मैं कुछ हद तक शानदार दिमाग से थक गया हूं, प्रत्येक अपनी अद्वितीय राय का योगदान करने की कोशिश कर रहा है, जो उनके सामने लाखों लोगों के विपरीत नहीं है। - Michael Krelin - hacker


git clone -b <branch> <remote_repo>

उदाहरण:

git clone -b my-branch git@github.com:user/myproject.git

गिट 1.7.10 और बाद में, जोड़ें --single-branch सभी शाखाओं को लाने से रोकने के लिए। ओपनसीवी 2.4 शाखा के साथ उदाहरण:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git

6683
2017-12-31 05:36



pierr: मुझे यकीन नहीं है कि यह ऊपर दिए गए समस्या का वर्णन जवाब देता है, लेकिन यह कर देता है वास्तविक प्रश्न का उत्तर दें - एक भंडार की एक विशिष्ट शाखा को क्लोन कैसे करें। मैंने इसे वोट दिया क्योंकि यह जवाब है कि जब मैं इस पृष्ठ पर आया था तब मैं गुगल रहा था। - Jaime Bellmyer
यह काम। यह myproject में हेड-शाखा की बजाय निर्दिष्ट शाखा में नए सिर को इंगित करता है। हालांकि, यह अभी भी लाता है सब शाखाओं। @ Edmar-miyake का जवाब देखें। - cdunn2001
समाचार के लिए यह जवाब देखें: stackoverflow.com/a/14930421/755257 - cbeleites
यदि आप कमांड में एक - डीपथ एक्स जोड़ते हैं तो यह समस्या के विवरण का उत्तर देता है। यदि आप ऐसा करते हैं, तो यह केवल निर्दिष्ट शाखा और इसकी अंतिम सामग्री क्लोन करेगा। - ramsvidor
के लिए thx --single-branch; यह लिखने के समय गिट 2.5 बाहर है। पुराने संस्करणों की परवाह नहीं है। - Bernhard Döbler


एक शाखा क्लोन करने के लिए के बग़ैर अन्य शाखाएं ला रही हैं:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH

222
2017-09-08 14:34



अच्छा समाधान। पुराने गिट (मेरे पास 1.5.5.6 है) पर, एक गिट शाखा - चेकआउट से पहले ब्रैंच मूल / $ शाखा की आवश्यकता हो सकती है। - Johannes Thoma
काम करता है, और शाखाओं में मौजूद उन टैग को भी लाता है, जो मैं चाहता था। (मैं वास्तव में लाने के लिए चाहता था विभिन्न शाखाएं, लेकिन केवल चयनित वाले; इसके लिए, यह बार-बार पर्याप्त है remote add तथा checkout यहां के रूप में, तो git remote rm origin साफ करना।) - Jesse Glick
जॉर्ज एडुआर्डो कार्डोना के जवाब का उपयोग करके मुझे भारी भंडार मिलते हैं, इस विधि का उपयोग करके मुझे बहुत साफ भंडार मिलते हैं। धन्यवाद। - joshcomley
किसी अन्य प्रोजेक्ट में गिट रेपो के विशिष्ट टैग को उथल-पुथल के लिए सही समाधान। छोड़ने की सिफारिश करें -f  गिट रिमोट कमांड से, फिर उपयोग करें git fetch --depth=1 $BRANCH $TAG, फिर git checkout FETCH_HEAD। Init निर्दोष है, और टैग बदलना स्वचालित रूप से चेक आउट कोड अपडेट हो जाएगा। - taranaki


इसे करने का एक बहुत ही आसान तरीका है :)

भंडार क्लोन करें

git clone <repository_url>

सभी शाखाओं की सूची

git branch -a 

जो शाखा आप चाहते हैं उसे चेकआउट करें

git checkout <name_of_branch>

204
2017-07-14 09:42



इसने कार्यशील निर्देशिका को सही शाखा में बदल दिया, लेकिन मैं अपने द्वारा किए गए किसी भी बदलाव को धक्का नहीं दे पा रहा हूं, क्योंकि मैं "वर्तमान में एक शाखा पर नहीं हूं"। - Seppo Enarvi
यह मेरे लिए समाधान था, क्योंकि मैंने पहले से ही 'मास्टर' क्लोन किया था। मुझे नहीं पता था कि मैं एक दूरस्थ शाखा 'चेकआउट' कर सकता हूं। - yazzer
यह संभवतः यह करने का सही तरीका है; सर्वोत्तम प्रथाओं के लिहाज से - aaiezza
गिट चेकआउट mybranchname तो गिट fetch किया - Shohanur Rahaman
इस तरह से केवल चयनित शाखा क्लोन नहीं है। यह उत्तर बेहतर लगता है: stackoverflow.com/a/7349740/3075243। उदाहरण के लिए यदि रेपो में कई शाखाएं हैं जो इतनी बड़ी हैं कि हम प्रत्येक को क्लोन नहीं करना चाहते हैं। - Proustibat


git checkout -b <branch-name> <origin/branch_name>

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

 git branch -a
* master
  origin/HEAD
  origin/enum-account-number
  origin/master
  origin/rel_table_play
  origin/sugarfield_customer_number_show_c

तो मेरी एनम-खाता-संख्या शाखा के आधार पर एक नई शाखा बनाने के लिए मैं करता हूं:

git checkout -b enum-account-number origin/enum-account-number

वापसी के बाद निम्नलिखित होता है:

Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number

"


69
2017-11-15 19:34



ध्यान दें कि यह उपयोगी हो सकता है git pull origin पहले ऐसा है कि git branch -a सभी नई (वर्तमान) दूरस्थ शाखाओं को सूचीबद्ध कर सकते हैं। - André Caron
अच्छी बात। शायद git fetch बेहतर है ताकि ऑटो विलय न हो, हालांकि। - dkinzer


उस नाम के साथ स्थानीय सिस्टम पर एक शाखा बनाएँ। जैसे कहें कि आप नाम की शाखा प्राप्त करना चाहते हैं "शाखा-05142011"

git branch branch-05142011 origin/branch-05142011 

यह आपको एक संदेश देगा - "शाखा शाखा-05142011 मूल से शाखा शाखा-05142011 को ट्रैक करने के लिए स्थापित किया गया है।"

अब बस नीचे की शाखा की जांच करें और आपके पास कोड है -
git checkout branch-05142011


20
2018-05-15 19:20



यह भी करेगा: गिट फ़ेच मूल [रिमोट-शाखा]: [नई-स्थानीय शाखा] - PlanetUnknown
क्या यह सही है मियाक (नीचे) दिखाता है कि रिमोट जोड़े जाने पर इसे कैसे किया जाए। - cdunn2001
यह कहना चाहिए, "ग्रह अज्ञात यह सही है।" - cdunn2001
@Planet अज्ञात धन्यवाद के लिए धन्यवाद git fetch origin [remote-branch]:[new-local-branch], मुझे वह अच्छा लगता है! - Jeaf Gilbert


git --branch <branchname> <url>

लेकिन बश पूरा करने के लिए यह कुंजी नहीं मिलती है: --branch

का आनंद लें।


11
2017-09-07 10:16