2011-03-24 15 views
7

मैं मौजूदा गिट भंडार के तहत किसी फ़ोल्डर की एक नई गिट भंडार बनाना चाहता हूं। मैं इतिहास को नए भंडार में संरक्षित करना चाहता हूं। मैं इस नए गिट भंडार कैसे बना सकता हूं?मैं मौजूदा गिट भंडार में किसी फ़ोल्डर से एक नया गिट भंडार कैसे बना सकता हूं?

उत्तर

5

आप इसे क्लोन कर सकते हैं, और उसके बाद क्लोन पर को उस भंडार को विभाजित कर सकते हैं, केवल उस निर्देशिका को निकालने के लिए जो आप चाहते हैं (इसके पूर्ण इतिहास के साथ)।

देखें Detach subdirectory into separate Git repository

नोट git clone --no-hardlinks /XYZ /ABC क्लोनिंग चरण के दौरान इस्तेमाल किया:

--no-hardlinks स्विच Git वास्तविक फ़ाइल प्रतियों का उपयोग hardlinking के बजाय जब एक स्थानीय भंडार क्लोनिंग बनाता है।

-1

आप इसे क्लोन कर सकते हैं और अपनी इच्छित फाइलें रख सकते हैं; इतिहास फिर संरक्षित किया जाएगा।

2

मान लीजिए कि आप केवल उपनिर्देशिका को एक अलग परियोजना के रूप में रखना चाहते हैं: आप git filter-branch का उपयोग कर सकते हैं।

  1. एक नई शाखा
  2. बनाएँ "पेड़ फिल्टर" है कि एक की जाँच की प्रतिलिपि जिस तरह से आप चाहते हैं rearranges, आदर्श एक अलग स्क्रिप्ट के रूप में परिभाषित
  3. भागो git filter-branch --tree-filter=/path/to/script thebranch एक

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

+1

आपको यहां एक (कस्टम) पेड़ फ़िल्टर को परिभाषित करने की आवश्यकता नहीं है। अंतर्निहित उपनिर्देशिका फ़िल्टर वास्तव में ऐसा करता है, जैसा कि [वॉनसी के उत्तर] से जुड़े उत्तर में वर्णित है (http://stackoverflow.com/questions/5421386/how-do-i-create-a-new-git-repository -से-एक फ़ोल्डर में एक मौजूदा-Git-भंडार/5421581 # 5421581)। आप इसे एक ही रिपो में एक नई शाखा पर नहीं करना चाहते हैं, बल्कि अलग क्लोन में भी करना चाहते हैं। यदि एक रेपो में अलग-अलग शाखाओं पर उपनिर्देशिका और पूर्ण परियोजना दोनों शामिल हैं, तो प्रारंभिक क्लोन दोनों के लिए रिमोट ट्रैकिंग शाखाएं बनाकर दोनों को लाएगा। बेकार! – Cascabel

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