2010-09-09 18 views
9

यह शायद स्पष्ट है और कई बार विभिन्न तरीकों से पूछा गया है, लेकिन मुझे कुछ समय खोजने के बाद जवाब नहीं मिला है।बहुत बड़े रिपोजिटरी का हिस्सा प्राप्त/खींचें?

निम्नलिखित मान लें:

  • मेरे पास है, कहते हैं, स्थानीय अंत में एक 500GB डिस्क;
  • मेरे पास 100 टेराबाइट रिमोट रिपोजिटरी है; इसलिए, पूरे भंडार क्लोनिंग की लागत बस संभव नहीं है;
  • रिमोट रिपोजिटरी बनाने के लिए प्रयुक्त कार्यशील निर्देशिका 1000 शीर्ष स्तर निर्देशिका डीआईआर 001, डीआईआर 002, से बना थी ... डीआईआर 00 एन प्रत्येक में केवल उप उपनिर्देशिका (पूर्व डीआईआर 001/सबडिर 1/फाइलए 1 ... डीआईआर 001) के तहत फाइलों के साथ कई उपनिर्देशिकाएं थीं।/subf1/fileAN और DIR001/subdir2/fileB1 ... DIR001/subdir2/fileBN, ...
  • मैं स्पष्ट रूप से नहीं को टैग किया या शाखा निर्देशिका DIR001, DIR002, ... DIR00N या उस बात के लिए कुछ और
  • मैं एक ब्रांड के नए स्थानीय Git भंडार init

मैं कुशलता से कैसे खींच या प्राप्त करें पिछले ग है डीआईआर 001/subdir2/fileB1 ... के रिमोट रिपोजिटरी से DIR001/subdir2/fileBN के कुछ संस्करण और कुछ भी नहीं?

और

अभी पिछले प्रतिबद्ध DIR001/subdir2/fileB1 ... DIR001/subdir2/fileBN से एक एकल फ़ाइल के दूरदराज के भंडार और कुछ नहीं से संस्करण?

और

मैं कुशलता से कैसे खींच या के एक सबसेट के एक पहले से प्रतिबद्ध संस्करण लाने करते कहा फ़ाइलों और कुछ नहीं?

शायद fetch/pull इस के लिए सही कमांड नहीं है।

+0

खेद है कि मैं अपने सवाल का जवाब नहीं कर सकते हैं लेकिन कृपया ध्यान दें कि हस्ताक्षर और टैगलाइन "बिल्कुल अनुशंसित" कर रहे हैं StackOverflow पर। आप यहां अधिक जानकारी प्राप्त कर सकते हैं: http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed/5038#5038 –

+0

नोट: गिट-एलएफएस (अप्रैल 2015) के साथ, खींचें/प्राप्त करें अधिक कुशल। मेरा संपादित उत्तर देखें। – VonC

+0

गिट 2.5 (क्यू 2 2015) एक एकल fetch प्रतिबद्ध का समर्थन करता है! मैंने नीचे अपना जवाब संपादित किया है, अब संदर्भित करें "[रिमोट गिट रिपॉजिटरी से एक विशिष्ट प्रतिबद्धता खींचें] (http://stackoverflow.com/a/30701724/6309)"। – VonC

उत्तर

5

"Partial cloning" का उत्तर आपको उथले क्लोन के साथ प्रयोग शुरू करने में मदद कर सकता है।
लेकिन यह सीमित हो जाएगा:

  • एक निश्चित गहराई तक, और/या कुछ शाखाओं को,
  • लेकिन कुछ फाइल या निर्देशिका (यदि आप एक फ़ाइल या निर्देशिका हालांकि विरल चेकआउट प्राप्त कर सकते हैं, लेकिन आप के लिए नहीं अभी भी पूर्ण रेपो प्राप्त करना है!)
  • यहां तक ​​कि एक निश्चित प्रतिबद्धता भी।
    (गिट 2.5 (क्यू 2 2015) एक एकल fetch प्रतिबद्धता का समर्थन करता है! "Pull a specific commit from a remote git repository" देखें)।

असली समाधान विशाल रिमोट रेपो को सबमिड्यूल में अलग करना होगा।
इस तरह की स्थिति को दर्शाने के लिए What are Git limits या Git style backup of binary files देखें।


अद्यतन अप्रैल 2015:

Git Large File Storage (LFS) पुल बनाना होगा/और अधिक कुशल लाने (GitHub अप्रैल 2015 तक)।

परियोजना git-lfs (देखें git-lfs.github.com) और सर्वर इसका समर्थन के साथ परीक्षण किया है: lfs-test-server:
आप मेटाडाटा केवल Git रेपो में स्टोर कर सकते हैं, और बड़ी फाइल कहीं

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

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