2010-12-21 18 views
29

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

मुझे निर्देशिका संरचना कल्पना करते हैं: क्योंकि अन्य लोगों को इस की जाँच,

 
+ main_repository  - the root directory of the main Repository 
    + src     - directory containing the source 
    + foreignRepo  - this should be the root directory of another git repo 
    + binaries 
    + other 

यह भी दूरदराज के भंडार में पता होना चाहिए, सिर्फ एक स्थानीय प्रतिलिपि मुझे मदद नहीं करता है और करने के लिए सक्षम होना चाहिए सभी सामान संकलित करें।

+4

आपको अपनी आवश्यकताओं के लिए गिट सबमिड्यूल देखना चाहिए: http://book.git-scm.com/5_submodules.html –

+1

अपडेट किया गया लिंक: http://schacon.github.io/gitbook/5_submodules.html – twasbrillig

+0

एक ब्लॉग पोस्ट प्रत्येक दृष्टिकोण के पेशेवर उत्तर विपक्ष बताता है [गिट सबमॉड्यूल: गिट सबट्री] (http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/)। –

उत्तर

22

आप Git submodules के बारे में पढ़ना चाहेंगे।

+1

या प्रो गिट बुक से: http://progit.org/book/ch6-6.html – bdukes

5

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

+ ParentRepo 
    - ChildRepo 

यदि आप चाइल्डरेपो में कोई फ़ाइल जोड़ते हैं, तो पेरेंटरिपो इसे अनदेखा कर देगा। जब आप इसे प्रतिबद्ध करते हैं तो इसे चाइल्डरेपो में जोड़ा जाएगा। ChildRepo में ParentRepo में फ़ाइलों को जोड़ना संभव नहीं है।

और जानकारी: Nested GIT repo gotchas!

+0

मैंने अभी एक अभिभावक रेपो के भीतर एक बच्चे रेपो घोंसले की कोशिश की। जब मैंने बाल रिपो में एक फाइल जोड़ा, तो मैंने 'cd ../' और 'गिट स्टेटस' किया और माता-पिता रेपो ने * नई फाइल को अनदेखा नहीं किया। – chharvey

5

उपयोग git subtree 1.7.11 में Git संस्करण और इसके बाद के संस्करण। git subtree is superior to git submodule क्योंकि:

  • एक साधारण वर्कफ़्लो का प्रबंधन आसान है। Git के पुराने संस्करण , का समर्थन कर रहे हैं (यहां तक ​​v1.5.2 से पहले)
  • उप-परियोजना के कोड के बाद सुपर परियोजना के क्लोन
  • git subtree किया जाता है अपने भंडार के उपयोगकर्ताओं कुछ नया सीखने की आवश्यकता नहीं है उपलब्ध सही है वे तथ्य यह है कि आप निर्भरता
  • प्रबंधन करने के लिए उपयोग कर रहे हैं सबट्री अनदेखा कर सकते हैं
  • git subtree का एक अलग भंडार प्रति बिना git submodule करता है (जैसे रूप .gitmodule)
  • सबट्री की सामग्री संशोधित किया जा सकता नया मेटाडाटा फ़ाइलों को जोड़ नहीं है निर्भरता कहीं और

इसके अतिरिक्त, यदि आपको detach a subtree of your existing repository into a new repository, git subtree split की आवश्यकता है तो आप इसकी सहायता कर सकते हैं।

+0

यह उत्तर मूल रूप से यहां पोस्ट किया गया था: http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/ –

संबंधित मुद्दे