2010-03-05 10 views
19

में एक शाखा डालें मेरे पास दो शाखाओं के साथ एक गिट रिपोजिटरी (github.com पर) है: मास्टर और gh-pages। मैं एक उपनिर्देशिका में gh-pages शाखा रखना चाहता हूं, ताकि मुझे हर बार शाखाएं स्विच करने की आवश्यकता न हो।गिट: एक उपनिर्देशिका

repo/ 
    (content of the master branch) 
    gh-pages/ 
      (content of the gh-pages branch) 

क्या यह संभव है?

+0

एक अलग भंडार का उपयोग करना आम तौर पर आसान होता है, लेकिन आपको git.git का [contrib/workdir/git-new-workdir] मिल सकता है (http://git.kernel.org/?p=git/git.git ; ए = ब्लॉब; एफ = contrib/workdir/git-new-workdir; एच = 75e8b258177f7f04dadcac125f2bf7ebea4d0f81; एचबी = HEAD) उपयोगी। –

+0

प्रश्न का वास्तविक प्रत्यक्ष उत्तर: http://stackoverflow.com/questions/4750520/git-branch-gh-pages/4993758#4993758 – cregox

उत्तर

5

ऐसा नहीं है कि काम करने के लिए चीजें कैसे डिज़ाइन की गई हैं। आप सैद्धांतिक रूप से अपने मूल क्लोन की एक उपनिर्देशिका के भीतर भंडार को क्लोन कर सकते हैं और उस निर्देशिका को उच्च स्तरीय भंडार से बाहर रखा गया है, लेकिन क्या यह उपनिर्देशिका के बजाय पूरी तरह से अलग निर्देशिका में इसे जांचना बहुत आसान नहीं होगा?

कहना है कि ...

/repo/master/(clone on master branch) 

और फिर एक और क्लोन यह एक एकल में कई परियोजनाओं गठबंधन करने के लिए एक अच्छा विचार नहीं है संस्करण नियंत्रण के साथ

/repo/gh-pages/(clone on gh-pages branch) 
3

आम तौर पर दूसरी शाखा पर है भंडार। उदाहरण के लिए, यदि कोई आपके भंडार को फोर्क करना चाहेगा, लेकिन गिटहब पर उनकी प्रतिलिपि होस्ट न करें? फिर gh-pages निर्देशिका उनके लिए पूरी तरह बेकार होगी। भले ही उन्होंने गिटहब में उनकी मेजबानी की, gh-pages निर्देशिका बहुत अच्छी तरह से अभी भी उनके लिए अप्रासंगिक हो सकती है।

मुझे एहसास है कि ऐसा करने का गिटहब तरीका इस सलाह के खिलाफ चला जाता है, कुछ हद तक (हालांकि, वे अलग-अलग शाखाओं पर हैं, फिर भी वे एक ही रेपो में हैं)। हालांकि, इस मामले की शाखाएं पूरी तरह से असंबंधित हैं (वे किसी भी इतिहास को साझा नहीं करते हैं) इसलिए एक व्यावहारिक परिप्रेक्ष्य से, ऐसा लगता है कि अलग-अलग भंडारों में थे। अगर कोई आपके रेपो को क्लोन करता है और gh-pages शाखा नहीं चाहता है, तो वे इसे हटा सकते हैं और शून्यmaster पर प्रभाव होगा।

-2

गिट में शाखाएं पॉइंटर्स (उस कदम) करने के लिए संकेतक हैं, और इसलिए एक उपनिर्देशिका के रूप में शाखा होने के लिए संभव नहीं है।

निष्पक्ष बनाने के लिए git co gh-pages ज्यादा नहीं है कठिन से cd ../gh-pages

+0

यह कठिन होने के बारे में नहीं है, लेकिन दोनों एक ही समय में हैं। एक gh-pages शाखा होने के लिए यह बिल्कुल उचित है जो पूरी तरह से मास्टर से अलग हो जाता है, और फ़ाइलों को स्थानांतरित करने के लिए उन्हें एक तरफ रखने के लिए सुविधाजनक है। –

24

आप subtree merging option की तलाश में हो सकता है।

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

यदि आप बेहतर तरीके से उपयुक्त हैं तो आप अपनी मास्टर शाखा के एक सबमिशन के रूप में gh-पृष्ठों को भी देख सकते हैं।

+1

एफडब्ल्यूआईडब्ल्यू, यह वह है जिसे सही उत्तर के रूप में स्वीकार किया जाना चाहिए। –

+0

यहां एक छोटी सी मार्गदर्शिका प्रदान की जाती है: https://gist.github.com/cobyism/4730490 – orbitbot

+0

आपकी आखिरी पंक्ति समझ का एक बड़ा सौदा करती है। उत्कृष्ट टिप के लिए धन्यवाद! –

4

गिट 2.5 के साथ शुरू, आप दोनों निर्देशिकाओं को पर विभिन्न निर्देशिकाओं में पर चेक आउट कर सकते हैं। https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows देखें। git worktree add -b gh-pages ../gh-pages origin/gh-pages के माध्यम से सेटअप करें।

आप अपने master चेकआउट की उपनिर्देशिका की सामग्री GitHub पर gh-pages में डाल दिया करने के लिए चाहते हैं, https://github.com/X1011/git-directory-deploy पर प्रदान की गई स्क्रिप्ट का उपयोग करें।

+0

उस निर्देशिका में बहुत सारी फाइलें हैं, मैं इसका उपयोग कैसे कर सकता हूं? क्या मुझे सिर्फ 'deploy.sh' फ़ाइल कॉपी करनी चाहिए? – fiatjaf

+0

हां, केवल 'deploy.sh'। प्रदान की गई README.md फ़ाइल में शीर्षक ** कॉन्फ़िगरेशन ** के नीचे देखें: https://github.com/X1011/git-directory-deploy#configuration – koppor

0

मैंने git subtree चाल की कोशिश की है, लेकिन इसकी आवश्यकता है कि master में सभी gh-pages सामग्री है, जो इस मामले में आदर्श नहीं है। बहुत बेहतर और सरल

  1. है ./repo/gh-pages/
  2. में एक नया निर्देशिका, कि (gh-pages)
  3. cd gh-pages/, git init और git checkout -b gh-pages के लिए .gitignore पर एक पंक्ति में कहें दूरस्थ वहाँ एक स्वतंत्र Git बनाने
बनाएं

आप केवल git clone पर केवल ./gh-pages/ पर अपनी इच्छित शाखा के साथ भी कर सकते हैं।

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