खोज…


एक सबमॉड्यूल जोड़ना

आप अपने प्रोजेक्ट के भीतर एक फ़ोल्डर के रूप में एक और Git रिपॉजिटरी शामिल कर सकते हैं, Git द्वारा ट्रैक किया गया:

$ git submodule add https://github.com/jquery/jquery.git

आपको नई .gitmodules फ़ाइल को जोड़ना और प्रतिबद्ध करना चाहिए; यह बताता है कि गिट git submodule update चलने पर क्या सबमॉडल्स को क्लोन किया जाना चाहिए।

सबमॉडल्स वाले एक गिट रिपॉजिटरी की क्लोनिंग

जब आप एक रिपॉजिटरी को क्लोन करते हैं जो सबमॉड्यूल्स का उपयोग करता है, तो आपको उन्हें प्रारंभ और अपडेट करने की आवश्यकता होगी।

$ git clone --recursive https://github.com/username/repo.git

यह संदर्भित सबमॉड्यूल्स को क्लोन करेगा और उन्हें उपयुक्त फ़ोल्डर्स (सबमॉड्यूल्स के भीतर सबमॉड्यूल्स सहित) में रखेगा। यह क्लोन git submodule update --init --recursive चलाने के बराबर है - क्लोन समाप्त होने के तुरंत बाद।

एक सबमॉड्यूल को अपडेट करना

एक सबमॉड्यूल एक और रिपॉजिटरी में एक विशिष्ट प्रतिबद्धता का संदर्भ देता है। सभी submodules के लिए संदर्भित सटीक स्थिति की जाँच करने के लिए, चलाएँ

git submodule update --recursive

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

git submodule foreach git pull <remote> <branch>

या डिफ़ॉल्ट git pull तर्क का उपयोग करें

git submodule foreach git pull

ध्यान दें कि यह सिर्फ आपकी स्थानीय कार्य प्रतिलिपि को अपडेट करेगा। यदि इस कमांड के कारण परिवर्तन हो तो रनिंग git status सबमॉडल डायरेक्टरी को गंदे के रूप में सूचीबद्ध करेगी। इसके बजाय नए राज्य को संदर्भित करने के लिए अपने भंडार को अपडेट करने के लिए, आपको बदलाव करने होंगे:

git add <submodule_directory>
git commit

आपके द्वारा किए जाने वाले कुछ बदलाव हो सकते हैं यदि आप git pull उपयोग करते हैं तो आप मर्ज संघर्ष कर सकते हैं ताकि आप अपने परिवर्तनों को शीर्ष पर git pull --rebase लिए git pull --rebase का उपयोग कर सकें, अधिकांश समय यह संघर्ष की संभावना को कम करता है। इसके अलावा यह सभी शाखाओं को स्थानीय तक खींचता है।

git submodule foreach git pull --rebase

किसी विशिष्ट सबमॉडल की नवीनतम स्थिति की जांच करने के लिए, आप इसका उपयोग कर सकते हैं:

git submodule update --remote <submodule_directory>

एक शाखा का पालन करने के लिए एक सबमॉड्यूल सेट करना

एक सबमॉडल को हमेशा एक विशिष्ट प्रतिबद्ध SHA1 ("गिटलिंक", माता-पिता रेपो के सूचकांक में विशेष प्रविष्टि) पर चेक किया जाता है

लेकिन कोई उस सबमॉड्यूल को अद्यतन करने का अनुरोध कर सकता है जो कि सबमॉड्यूल रिमोट रेपो की एक शाखा के नवीनतम कमिट में है।

प्रत्येक git checkout abranch --track origin/abranch, git pull में जाने के बजाए, git checkout abranch --track origin/abranch, git pull , आप बस (जनक रेपो से) कर सकते हैं:

git submodule update --remote --recursive

चूंकि सबमॉडल का SHA1 बदल जाएगा, इसलिए आपको इसके साथ पालन करने की आवश्यकता होगी:

git add .
git commit -m "update submodules"

यह माना जाता है कि सबमॉड्यूल्स थे:

  • या तो पालन करने के लिए एक शाखा के साथ जोड़ा गया:

      git submodule -b abranch -- /url/of/submodule/repo
    
  • या किसी शाखा का अनुसरण करने के लिए (किसी मौजूदा सबमॉड्यूल के लिए) कॉन्फ़िगर किया गया है:

      cd /path/to/parent/repo
      git config -f .gitmodules submodule.asubmodule.branch abranch
    

एक सबमॉडल हटाना

1.8

आप कॉल करके एक the_submodule (जैसे the_submodule ) निकाल सकते हैं:

$ git submodule deinit the_submodule
$ git rm the_submodule 
  • git submodule deinit the_submodule the_submodule / config से the_submodule s 'प्रविष्टि को हटाता है। यह g_ सबमॉड्यूल git submodule update , git submodule sync सबमॉड्यूल git submodule sync और git submodule foreach सबमॉड्यूल फॉरचेट कॉल से g_ सबमॉड्यूल को बाहर कर देता है और इसकी स्थानीय सामग्री (स्रोत) को हटा देता है। इसके अलावा, यह आपके माता-पिता के भंडार में परिवर्तन के रूप में नहीं दिखाया जाएगा। git submodule init और git submodule update सबमॉड्यूल git submodule update आपके माता-पिता के भंडार में सराहनीय बदलाव के बिना, फिर से सबमॉड्यूल को बहाल करेगा।

  • git rm the_submodule को कार्य के पेड़ से हटा देगा। फाइलें .gitmodules फ़ाइल (स्रोत) में .gitmodules की प्रविष्टि के साथ-साथ .gitmodules । यदि केवल git rm the_submodule (बिना पूर्व git submodule deinit the_submodule के चलाया जाता है, हालाँकि, आपके .it / config फ़ाइल में git submodule deinit the_submodule की प्रविष्टि बनी रहेगी।

1.8

यहाँ से लिया गया:

  1. .gitmodules फ़ाइल से संबंधित अनुभाग हटाएं।
  2. स्टेज .gitmodules git add .gitmodules
  3. .git/config से संबंधित अनुभाग हटाएं।
  4. रन git rm --cached path_to_submodule (कोई अनुगामी स्लेश) नहीं।
  5. rm -rf .git/modules/path_to_submodule
  6. कमिट git commit -m "Removed submodule <name>"
  7. अब अनटैक किए गए सबमॉड्यूल फ़ाइलों को हटा दें
  8. rm -rf path_to_submodule

एक सबमॉड्यूल को आगे बढ़ाना

1.8

Daud:

$ git mv old/path/to/module new/path/to/module
1.8
  1. .gitmodules संपादित करें और .gitmodules के पथ को उचित रूप से बदलें, और इसे git add .gitmodules साथ इंडेक्स में git add .gitmodules

  2. यदि आवश्यक हो, तो सबमॉड्यूल ( mkdir -p new/path/to ) के नए स्थान की मूल निर्देशिका बनाएं।

  3. सभी सामग्री को पुरानी से नई निर्देशिका में ले जाएं ( mv -vi old/path/to/module new/path/to/submodule )।

  4. सुनिश्चित करें कि Git इस निर्देशिका को ट्रैक करता है ( git add new/path /to )।

  5. पुराने निर्देशिका को git rm --cached old/path/to/module निकालें।

  6. निर्देशिका को .git/modules/ old/path/to/module अपनी सभी सामग्री के साथ .git/modules/ new/path/to/module

  7. .git/modules/ new/path/to /config फ़ाइल संपादित करें, सुनिश्चित करें कि वर्कट्री आइटम नए स्थानों पर इंगित करता है, इसलिए इस उदाहरण में यह worktree = ../../../../../ old/path/to/module होना चाहिए worktree = ../../../../../ old/path/to/module । आमतौर पर दो और होना चाहिए .. फिर उस जगह सीधे रास्ते में निर्देशिका। । फ़ाइल संपादित new/path/to/module /.git , यकीन है कि यह में पथ मुख्य परियोजना के अंदर सही नए स्थान को इंगित कर .git फ़ोल्डर, इस उदाहरण में तो gitdir: ../../../.git/modules/ new/path/to/module

    git status आउटपुट इस तरह दिखता है:

     # On branch master
     # Changes to be committed:
     #   (use "git reset HEAD <file>..." to unstage)
     #
     #       modified:   .gitmodules
     #       renamed:    old/path/to/submodule -> new/path/to/submodule
     #
    
  8. अंत में, बदलाव करें।


एक्सल बेकर्ट द्वारा स्टैक ओवरफ्लो का यह उदाहरण



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow