2011-08-22 9 views
10

के अंदर एक गिट रेपो होना संभव है मेरे पास एक django प्रोजेक्ट गिट के साथ प्रबंधित है। मैं इसे अपने मेजबान को धक्का दे रहा हूं। अब, मैं केवल एक निर्देशिका (inc। All sub dirs) को किसी अन्य गिट रेपो में धक्का देने में सक्षम होना चाहता हूं। यह कैसे संभव है, अगर यह संभव है?क्या किसी अन्य गिट रेपो

संपादित करें: तो मैं चाहता हूं कि वह निर्देशिका एक गिट रेपो हो।

उत्तर

21

आप submodules के लिए Git के समर्थन में दिखाई दे सकता है। आप अपनी मुख्य परियोजना में एक सबमिशन के रूप में दूसरा भंडार जोड़ देंगे, उदा। जैसे आदेशों के साथ: - यदि आप एक परिवहन कि तुम पर धक्का कर सकते हैं का उपयोग करने के origin को बदल सकते हैं और फिर धक्का के रूप में अगर यह थे

git submodule add git://wherever/blah.git library-code 
git commit -m "Added a new submodule called 'library-code'" 

जब आप library-code उपनिर्देशिका में बदलने के लिए, यह के रूप में अगर माता पिता भंडार मौजूद नहीं है है पूरी तरह से स्वतंत्र

यह निर्दिष्ट करने के लिए कि आप एक विशेष संस्करण पर सबमिशन चाहते हैं, आपको सबमिशन में बदलना चाहिए और सही संस्करण पर स्विच करने के लिए git checkout का उपयोग करना चाहिए। तो फिर तुम वापस मुख्य भंडार और मंच पर बदल सकते हैं और साथ कि नई submodule संस्करण के लिए प्रतिबद्ध:

git add library-code 
git commit -m 'Change the submodule version' 

मुख्य भंडार के वृक्ष बस, उस संस्करण submodule पर होना चाहिए संग्रहीत करता है तो जब आप मुख्य भंडार धक्का , यह सबमिशन में किसी भी फाइल को धक्का नहीं दे रहा है।

आदेश में इस उपनिर्देशिका अलग हो गई है, जबकि इतिहास के संरक्षण, आप अपने मूल भंडार और उपयोगकर्ता git filter-branch क्लोन करने के लिए इतिहास के पुनर्लेखन के लिए, इस जवाब में वर्णित के रूप में की आवश्यकता होगी:

फिर आप इसे एक नए बनाए गए भंडार गिटहब भंडार में धक्का दे सकते हैं, अपनी मूल प्रोजेक्ट पर वापस जा सकते हैं, उपनिर्देशिका को हटा सकते हैं, और ऊपर वर्णित अनुसार सबमिशन के साथ इसे प्रतिस्थापित कर सकते हैं।

यदि आप गिट अवधारणाओं से बहुत परिचित नहीं हैं तो यह आपके लिए मुश्किल हो सकता है - मैं पहले से ही गिट submodules पर पढ़ने की सिफारिश करेंगे।

+2

मेरे पास पहले से ही मेरी उप-निर्देशिका में कोड है, इसलिए मैं उन्हें गिट रेपो में रूपांतरित करना चाहता हूं, और उन्हें एक नए रिमोट रेपो (उदा। जीथ्यूब) में धक्का देना चाहता हूं। क्या आप ऐसा करने का एक उदाहरण दे सकते हैं? मुझे खेद है कि मैं इन चीज़ों पर इतनी नौसिखिया हूं :) – yasar

+1

क्या आप उपनिर्देशिका में सब कुछ के इतिहास को संरक्षित करना चाहते हैं? –

+0

और जब मैं अन्य रिमोट रेपो में बड़ा रेपो दबाता हूं तो सबमिशन के बारे में क्या? क्या इसमें सबमिशन की फाइलें शामिल हैं? – yasar

1

जब आप किसी विशेष निर्देशिका में परिवर्तन करते हैं, तो उन परिवर्तनों को चरणबद्ध करें और प्रतिबद्ध करें और धक्का दें, आप उस निर्देशिका को प्रभावी ढंग से "धक्का" दे रहे हैं।

यदि अन्य गिट रेपो में केवल वह निर्देशिका है जिसे आप धक्का देना चाहते हैं, और यही कारण है कि आप इसे अपने आप में एक रेपो के रूप में रखना चाहते हैं, तो आप Git Submodules देख सकते हैं।

1

क्या आपने गिट submodules में देखा है? यह गिट भंडारों को साफ-सुथरा करने की अनुमति देता है, लेकिन पूरी तरह से स्वतंत्र रहता है।

इसका मतलब है कि आपके पास पुश/पुल के लिए एक अलग रिमोट यूआरएल के साथ एक उपनिर्देशिका हो सकती है और मुख्य परियोजना को छेड़छाड़ किए बिना अलग-अलग प्रतिबद्ध पेड़ + लॉग हो सकता है।

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

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