git - गिट में एक शाखा कैसे क्लोन करें?




branch git-clone (9)

  1. ओपन गिट बैश खोल।
  2. अपनी फाइल सिस्टम में एक निर्देशिका बनाएं जहां आप चेकआउट करना चाहते हैं।
    • $ mkdir फ़ीचर_develop_branch
  3. निर्देशिका_ develop_branch फ़ोल्डर में निर्देशिका बदलें।
    • $ सीडी फ़ीचर_develop_branch
  4. बाहरी क्लोन यूआरएल का उपयोग करके भंडार क्लोन करें।
  5. क्लोनिंग के बाद, निर्देशिका को रिपोजिटरीनाम में बदलें।
    • $ सीडी / रिपॉजिटरी नाम
  6. शाखा देखें।
    • $ गिट चेकआउट <Branch Name>

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

[email protected] [~/Projects/skeleton] git branch
* master
  rails
  c
  c++

अगर मैं एक नई परियोजना के लिए मास्टर शाखा देखना चाहता हूं, तो मैं कर सकता हूं

[email protected] [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/

और सबकुछ यह है कि मैं इसे कैसे चाहता हूं। विशेष रूप से, नई मास्टर शाखा कंकाल मास्टर शाखा को इंगित करती है, और मैं बुनियादी परियोजना सेटअप में बदलावों के चारों ओर स्थानांतरित करने के लिए धक्का और खींच सकता हूं।

हालांकि, काम नहीं करता है, अगर मैं एक और शाखा क्लोन करना चाहता हूं। मैं इसे प्राप्त नहीं कर सकता हूं ताकि मैं केवल शाखा को खींचूं, उदाहरण के लिए रेल शाखा, और फिर नए रेपो में एक 'मास्टर' शाखा है जो डिफ़ॉल्ट रूप से कंकाल रेपो की 'रेल' शाखा से खींचती है और खींचती है।

क्या ऐसा करने के लिए जाने का कोई अच्छा तरीका है? या, हो सकता है कि यह तरीका नहीं है कि गिट मुझे चीजों की संरचना करना चाहता है, और मैं निश्चित रूप से इसके लिए खुला हूं। शायद रेल कंकाल रेपो के साथ मास्टर कंकाल रेपो को ट्रैक करने के साथ, मेरे पास एकाधिक रिपोज़ होना चाहिए? और रेल कंकाल रेपो क्लोनिंग कोई भी व्यक्तिगत परियोजना।

किसी भी विचार और सुझाव की सराहना की जाती है!


2 चरणों में किया जा सकता है

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

    • git clone <http url>
  2. अपनी इच्छित शाखा चेकआउट करें

    • git checkout $BranchName

आप निम्न आदेश का उपयोग कर ऐसा कर सकते हैं:

git clone -b branch_name --single-branch project_url local_folder_to_clone_in

आप लंबे घुमावदार तरीके से कोशिश कर सकते हैं:

mkdir newrepo.git
cd newrepo.git
git init
git remote add origin file:///path/to/original 
git fetch origin branchiwant:refs/remotes/origin/branchiwant
git checkout -b branchiwant --track origin/branchiwant

यह क्या करता है:

  • खाली गिट भंडार बनाएँ और init।
  • रिमोट नामक मूल के रूप में मूल भंडार जोड़ता है।
  • रिमोट नामक मूल से केवल उस शाखा को प्राप्त करता है जिसे आप चाहते हैं।
  • आपके द्वारा अभी क्लोन किए गए स्रोत शाखा को ट्रैक करने के लिए सेटअप किया गया एक नया ब्रैच बनाता है और जांचता है।

उम्मीद है कि आप जो कुछ भी कर रहे हैं उसके जैसा कुछ होगा।


केवल एक शाखा क्लोन करें यह सबसे आसान तरीका है:

$ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git

क्लोनिंग पूरा होने के बाद, मुझे सभी git submodule update --init --recursive डाउनलोड करने के लिए git submodule update --init --recursive दर्ज करना पड़ा


गिट संस्करण 1.7.3.1 (विंडोज़ पर) का उपयोग करके, यहां मैं जो करता हूं ( $BRANCH का नाम है जिसे मैं चेकआउट करना चाहता हूं और $REMOTE_REPO रिमोट रिपोजिटरी का यूआरएल है जिसे मैं क्लोन करना चाहता हूं):

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

इस दृष्टिकोण का लाभ यह है कि बाद के git pull (या git fetch ) कॉल भी अनुरोधित शाखा को डाउनलोड करेंगे।


नोट: git1.7.10 (अप्रैल 2012) वास्तव में आपको केवल एक शाखा क्लोन करने की अनुमति देता है:

# clone only the remote primary HEAD (default: origin/master)
git clone --single-branch

as in:
git clone <url> --branch <branch> --single-branch [<folder>]

आप इसे t5500-fetch-pack.sh में देख सकते हैं:

test_expect_success 'single branch clone' '
  git clone --single-branch "file://$(pwd)/." singlebranch
'

Tobu comments कि:

उथले क्लोन करते समय यह निहित है।
यह git clone --depth 1 बनाता है - बैंडविड्थ को बचाने के लिए सबसे आसान तरीका git clone --depth 1

और गिट 1.9.0 (फरवरी 2014) के बाद, उथले क्लोन डेटा स्थानांतरण (पुश / पुल) का समर्थन करते हैं, ताकि विकल्प अब और भी उपयोगी हो।
" git clone --depth 1 (उथले क्लोन) से अधिक उपयोगी होने पर और देखें" ?

एक उथले क्लोन को "पूर्ववत करना" विस्तृत किया गया है " उथले क्लोन को पूर्ण क्लोन में कनवर्ट करें " (गिट 1.8.3+)

# unshallow the current branch
git fetch --unshallow

# for getting back all the branches (see Peter Cordes' comment)
git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*
git fetch --unshallow

जैसा Chris टिप्पणी की:

लापता शाखाओं को रिवर्स करने के लिए जादू रेखा --single-branch है (गिट v2.1.4):

git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow  

git clone <url> --branch <branch> --single-branch

बस यूआरएल और शाखा का नाम डालें





git-clone