2012-07-26 8 views
9

मेरे पास एक जैकिल साइट है जिसे मैं गिटहब पर होस्ट करना चाहता हूं। चूंकि जेक्युल प्लगइन्स गिटहब पर समर्थित नहीं हैं, इसलिए मैं अपनी माटर शाखा में केवल _साइट के अंदर फाइलें रखना चाहता हूं और एक विकास शाखा बना सकता हूं जिसमें इसमें सबकुछ है।क्या दो शाखाओं के साथ गिटहब रेपो होना संभव है जिसमें मेरी स्थानीय मशीन पर अलग-अलग निर्देशिकाएं हों?

क्या यह संभव होगा? यदि ऐसा है तो मैं यह कैसे कर सकता हूं? मैं गिट के साथ सबसे अच्छा नहीं हूँ।

धन्यवाद

उत्तर

10

ऐसा लगता है सब आप चाहते हैं एक विकास शाखा और एक मास्टर शाखा है जो कुछ फ़ोल्डर की सामग्री का एक दर्पण में शामिल होंगे है कि, _site का कहना है।

चलिए यह करते हैं! ठीक है। मुझे लगता है कि आपके पास एक विकास शाखा के साथ एक भंडार है जिसमें सभी कर्मचारी और _site फ़ोल्डर शामिल हैं जिन्हें आप "निर्यात" करना चाहते हैं।

फ़ोल्डर की सामग्री में एक प्रतिबद्धता बनाएं।

echo 'Fill with a meaningful description' | git commit-tree development^{tree}:_site एक प्रतिबद्ध बनाता है और इसकी आईडी आउटपुट करता है। यह 47651a42... था। यह आपकी मशीन पर अलग होगा।

ध्यान दें कि development^{tree}:_site पेड़ का एक संशोधन (sha1 sum) है जो development शाखा पर अंतिम प्रतिबद्धता की रूट में _site फ़ोल्डर से मेल खाता है।

और अब कर मास्टर शाखा इस इंगित प्रतिबद्ध: git update-ref refs/heads/master 47651a42

अब

git log master मेरी मशीन पर निम्न दिखाने

commit 47651a42e6800f399c4352d0416f4ca96895f099 
Author: Aleksandr Priymak <[email protected]> 
Date: Fri Jul 27 05:27:43 2012 +0400 

    first commit 

आप इस शाखा चेकआउट यदि आप _site फ़ोल्डर की सामग्री प्राप्त ! यह आसान है। केवल एक चीज बाकी है। 47651a42 प्रतिबद्धता में कोई माता-पिता नहीं है, इसलिए आपको अपडेट किए गए मास्टर को धक्का देने के लिए -f को अपने git push कमांड में जोड़ना होगा। वास्तव में माता-पिता को निर्दिष्ट करने का दूसरा तरीका है। इस प्रयोग के इस आदेश

echo 'Fill with a meaningful description' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)

आप यह कर सकते हैं के बाद एक-लाइनर का उपयोग कर ऐसा करने के लिए

git update-ref refs/heads/master $(echo 'Add commit message here!' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)) 
+0

मैं मैं सिवाय इस के समान कुछ नहीं करना वास्तव में मास्टर में _site है चाहता था रेपो मैं बस सामग्री चाहता हूं और जब मैं 'git add _site/*' चला गया तो मुझे लगा कि मुझे वह मिल जाएगा लेकिन यह वास्तव में _site के साथ-साथ इसकी सामग्री भी जोड़ता है। क्या यह सिर्फ _site के अंदर दो गिट रेपोस और एक mygername.github.com निर्देशिका के अंदर एक .gitignore _site के साथ आसान होगा? – edhedges

+1

हाँ, यह आसान होगा, लेकिन जब तक आप submodules का उपयोग नहीं करते हैं तब तक _site उत्पन्न किए गए डेटा के आधार पर आप इस बारे में जानकारी खो देते हैं। –

+0

मुझे खेद है, लेकिन मुझे समझ में नहीं आता कि आप क्या कह रहे हैं। आपका क्या अर्थ है? – edhedges

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