2013-06-24 12 views
8

में दूरदराज के पुलिंग मैं एक Git भंडार bitbucket पर होस्ट निम्नलिखित निर्देशिका संरचना है कि है।उपनिर्देशिका

वे एक रेपो कि इस

/ <-- [WebsiteFilesGoHere] 

हमारे सबफ़ोल्डर में अपने रेपो खींच, और फिर एक बाद की तारीख में पीछे धकेलने के लिए सक्षम होने के लिए सबसे अच्छा तरीका क्या है की तरह लग रहा है?

अद्यतन: यह उल्लेखनीय है कि दोनों रिपो के पास एक दूसरे के बारे में जानने के बिना मौजूदा `/ वेबसाइट 'फ़ोल्डर में फ़ाइलें हैं।

अद्यतन 2: यह विंडोज आधारित गिट रेपो भी है, जिसे कई डेवलपर्स के बीच साझा किया जाता है (इसलिए किसी भी स्थानीय मशीन कॉन्फ़िगरेशन से परहेज करना अच्छा होगा)।

+2

'मैन गिट-सबोड्यूलर' – Jokester

+0

देखें अनुभाग को देखते हुए, शायद कहीं भी एक वास्तविक सबमिशन, और वर्तमान रेपो में कुछ सिम्लिंक? – Jokester

+0

क्या आप मुझे एक पैदल यात्रा दे सकते हैं? मैं गिट submodules समर्थन के साथ खेल रहा हूँ। एक ईंट की दीवार का थोड़ा सा मारना क्योंकि 'वेबसाइट' फ़ोल्डर पहले से मौजूद है। सबमिशन जोड़ने के लिए फ़ोल्डर को शाखा/उड़ाने से पहले, मैं बस यह सुनिश्चित करना चाहता हूं कि मैं सही काम कर रहा हूं। – Doug

उत्तर

1

अक्सर सबसे अच्छा लाभ के माध्यम से

एक अच्छा रन यहाँ submodules के बजाय subtrees उपयोग करने के लिए सुझाव:

http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/

इसके कई कारण आप सबट्री बेहतर उपयोग करने के लिए क्यों देख सकते हैं:

एक साधारण वर्कफ़्लो का प्रबंधन आसान है।

गिट का पुराना संस्करण समर्थित है (v1.5.2 से पहले भी)।

सुपर-प्रोजेक्ट का कोड सुपर प्रोजेक्ट के क्लोन के ठीक बाद उपलब्ध है।

उपट्री को कुछ भी नया सीखने के लिए आपके भंडार के उपयोगकर्ताओं की आवश्यकता नहीं है, वे इस तथ्य को अनदेखा कर सकते हैं कि आप निर्भरताओं का प्रबंधन करने के लिए उपट्री का उपयोग कर रहे हैं।

उपट्री नई मेटाडेटा फ़ाइलों को जोड़ता नहीं है जैसे submodules doe (i.e.gitmodule)।

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

मेरी राय में कमियां स्वीकार्य हैं:

आप एक नया मर्ज रणनीति (अर्थात सबट्री) के बारे में सीखना चाहिए।

उप-परियोजनाओं के लिए कोड बैक अपस्ट्रीम का योगदान थोड़ा अधिक जटिल है।

प्रतिबद्धता में सुपर और उप-प्रोजेक्ट कोड को मिश्रित करने की ज़िम्मेदारी आपके साथ नहीं है।

5

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

सबसे पहले, उस भंडार को .git/config में अपने रिमोट्स में से एक के रूप में जोड़ें।उदाहरण के लिए, मान लें कि आप जिथब से ज़ल्डोर की ग्रफ लाइब्रेरी में लाना चाहते हैं। इन नामों को पूरी तरह से काल्पनिक हैं:

[remote "gruff-upstream"] 
fetch = +refs/heads/*:refs/remotes/gruff/* 
url = https://github.com/zaldor/gruff.git 

अब आप एक git fetch gruff-upstream सभी वस्तुओं को पाने के लिए कर सकते हैं। अब आप gruff परियोजनाओं में उपलब्ध शाखाएं देख सकते हैं।

$ git branch -r 
gruff/experimental-hack 
gruff/master 
origin/master 

दो gruff लाइनों gruff की शाखाएं हैं। origin/master हमारी खुद की उत्पत्ति है। नाम संघर्ष: gruff में master है और हमारे पास master भी है। इससे कोई फर्क नहीं पड़ता: हम gruff/master एक अलग स्थानीय शाखा नाम दे सकते हैं।

$ git branch -t gruff-master gruff/master 
Branch gruff-master set up to track remote branch master from gruff-upstream. 

अब, अगर हम git checkout gruff-master, हमारे Git ट्रैक फ़ाइलों के सभी गायब हो जाएगा, gruff काम कर प्रतिलिपि द्वारा बदल दिया:

$ git checkout gruff-master 

अब हम हम एक छोटा सा यह gruff-master शाखा को दूल्हे कर सकते हैं। उदाहरण के लिए, हम, उप-निर्देशिका के लिए अपनी फ़ाइलों के सभी स्थानांतरित कर सकते हैं अवांछित फ़ाइलें और इस तरह के निकालें:

$ mkdir gruff 
$ git mv ...files... gruff 
$ git commit -a -m "moving gruff stuff to gruff/ subdir" 

अगला, हम अपने master वापस स्विच करें। कर्कश फ़ाइलें गायब हो जाते हैं, और हमारे फ़ाइलें वापस आ रहे हैं:

$ git checkout master 

अब हम में gruff से कुछ फाइलें ला सकता है हमारे master:

$ git checkout gruff-master -- gruff/file1 gruff/file2 ... 

इन फ़ाइलों को हमारे काम की नकल में अमल में लाना और हमारी सूची में जुड़ रहे हैं:

$ git checkout 
A gruff/file1 
A gruff/file2 
... 

हम इन्हें अभी हमारे master में कर सकते हैं।

जब अपस्ट्रीम gruff फ़ाइलों के नए संस्करण प्रकाशित करता है, तो हम अपने gruff-branch पर स्विच कर सकते हैं और खींच सकते हैं। हमारे सफाई और प्रतिबद्धता के खिलाफ नए बदलावों को हल करें। हमारे master पर वापस, हम अपने gruff-master स्थानीय ट्रैकिंग शाखा से उस नए अपडेट को चुन सकते हैं।

हां, यह मूल रूप से गिट को एक गौरवशाली पैच उपकरण के रूप में उपयोग कर रहा है। gruff-master से सामग्री master में चुनी गई कोई वंशावली नहीं है; यह सिर्फ जोड़ा फाइलों की तरह दिखता है। हालांकि, यह कुछ भी नहीं है और कई तरीकों से subtrees या मॉड्यूल से कम बोझिल है।

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