2011-10-18 9 views
119

मेरी लिपियों में, मैं अक्सर पुस्तकालयों (खान या अन्य) का उपयोग करता हूं जिनके पास अपने स्वयं के प्रतिनिधि होते हैं। मैं अपने रेपो में उन लोगों को डुप्लिकेट नहीं करना चाहता हूं और जब भी कोई नया संस्करण आता है तो उन्हें अद्यतन करने के साथ अटक जाते हैं। हालांकि, जब कोई रेपो क्लोन करता है, तो उसे अभी भी स्थानीय रूप से काम करना चाहिए और टूटी हुई लिंक नहीं होनी चाहिए।मैं एक गिट रेपो में निर्भरताओं को कैसे जोड़ सकता हूं?

मैं क्या कर सकता था इसके बारे में कोई विचार?

उत्तर

168

आप इसे गिट में submodules के साथ कर सकते हैं। अपने भंडार में, कार्य करें:

git submodule add path_to_repo path_where_you_want_it 

तो, अगर पुस्तकालय का संग्रह git://github.com/example/some_lib.git का URL था और आप अपनी परियोजना में lib/some_lib में यह चाहते थे, तो आप में प्रवेश चाहते हैं:

git submodule add git://github.com/example/some_lib.git lib/some_lib 

ध्यान दें कि यह जरूरत है अपने भंडार में शीर्ष-स्तरीय निर्देशिका से किया जाना है। तो cd को उस निर्देशिका में न करें जहां आप इसे पहले डाल रहे हैं।

आप एक submodule जोड़ सकते हैं या जब भी कोई आपके भंडार के एक ताजा चेकआउट करता है, तुम क्या करने की आवश्यकता होगी करने के बाद:

git submodule init 
git submodule update 

और फिर सब submodules आप एक ही में बाहर की जाँच की जाएगी जोड़ दिया है आपके पास संशोधन है

आप पुस्तकालयों में से एक, cd submodule में और पुल के एक नए संस्करण को अद्यतन करने के लिए चाहते हैं:

cd lib/some_lib 
git pull 

उसके बाद, आप lib/somelib संशोधित खंड में सूचीबद्ध देखना चाहिए जब आप एक git status है। उस फ़ाइल को जोड़ें, प्रतिबद्ध करें, और आप अद्यतित हैं। जब कोई सहयोगी उस संग्रह को अपने भंडार में खींचता है, तो वे lib/somelib को तब तक संशोधित करेंगे जब तक वे git submodule update चलाते हैं।

+2

आपके उत्तर के लिए धन्यवाद, ऊपर उठाया गया! (और शायद इसे कल स्वीकार करेगा) क्या निर्भरता के रूप में अन्य रेपो से केवल एक फ़ाइल जोड़ने का कोई तरीका है? या यह एक पूरा फ़ोल्डर होना है? –

+2

यदि आप इसे एक सबमिशन के रूप में ट्रैक करना चाहते हैं (और इस प्रकार, अपडेट में आसानी से खींचने में सक्षम हो) तो आपको पूरे भंडार में खींचना होगा। कई अन्य वीसीएस के विपरीत, गिट वास्तव में केवल शीर्ष-स्तरीय भंडार से निपटना चाहता है। – Emily

+3

[इसे पढ़ें] (https://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/) यह जानने के लिए कि एक सबमिशन किस लिए अच्छा है और काम करने के तरीके क्या हैं संभावित मुद्दे और [इसके बारे में एक चर्चा] (https://news.ycombinator.com/item?id=3904932)। – minghua

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

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