2010-12-07 11 views
23

कुछ अन्य भंडारों में 1 गिट भंडार कैसे लिंक करें?कुछ अन्य भंडारों में 1 गिट भंडार कैसे लिंक करें?

मान लें मैं निम्नलिखित खजाने है:

/var/Common.git

/var/Project1.git

/var/Project2.git

अब, मैं अन्य रिपॉजिटरीज़ में Common.git का उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूं ?

+0

https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial –

उत्तर

37

आप शायद submodules लिए देख रहे हैं:

submodules विदेशी खजाने स्रोत पेड़ की एक समर्पित उप-निर्देशिका के भीतर एम्बेड करने की अनुमति, हमेशा एक विशेष के लिए प्रतिबद्ध में इशारा किया।

एक महत्वपूर्ण शब्द है एम्बेडेड: Common.git का एक वास्तविक क्लोन अन्य परियोजनाओं में से प्रत्येक के अंदर एम्बेडेड किया जाएगा। यह आमतौर पर तब अच्छा होता है जब आप इसे अन्य प्रोजेक्ट्स के अंदर संशोधित नहीं कर रहे हैं, बस एक संस्करण का उपयोग करें, और उस संस्करण को मूल Common.git से अब और फिर अपडेट करें। आप कुछ इस तरह करते हैं:

# add Common.git as a submodule at the path "common" inside this repo 
git submodule add /var/Common.git common 
# initialize it, clone, and check out a copy 
git submodule update --init 
# commit the addition of the submodule 
git commit 

ध्यान दें कि submodule के लिए पथ अपने भंडार के लिए प्रतिबद्ध किया जा रहा है, ताकि आप एक सार्वजनिक रूप से उपलब्ध URL का उपयोग करना चाहिए। यदि आप इसे स्थानीय रूप से अनुकूलित करना चाहते हैं, तो आप git submodule init चला सकते हैं, .git/config में url संपादित करें, और फिर git submodule update चलाएं। यदि आपके पास और प्रश्न हैं, तो मैनपेज से परामर्श लें या एसओ खोजें; यहां बहुत सारे सबमिशन प्रश्न हैं।

यदि दूसरी तरफ आप प्रत्येक परियोजना के अंदर Common.git की सामग्री को संपादित करने जा रहे हैं, तो आप git-subtree का उपयोग करना चाहेंगे, जो कि गिट के उप-विलय विलय संकाय के आसपास एक दोस्ताना रैपर है। इससे आपको सामान्य परियोजनाओं की सामग्री को प्रत्येक परियोजनाओं के अंदर ट्रैक की गई सामग्री के रूप में माना जाएगा, जबकि अभी भी इसे बाहर करने में सक्षम होने और उन्हें सामान्य.git में विलय करने में सक्षम होना चाहिए, और परियोजनाओं में वापस Common.git में अपडेट मर्ज करें ।

4

यह एक आदर्श मामले जिसके लिए git submodule डिजाइन किया गया है: http://git-scm.com/docs/git-submodule

Project1 और Project2 के भीतर, आप आम की submodule जोड़ें। और फिर आप git submodule checkout

क्लोन रेपो में यह केवल सामान्य गिट के हैश को संग्रहीत करता है। तो आप git submodule init और चेकआउट।

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