2009-12-08 9 views
6

का उपयोग कर इतिहास में कुछ संख्याओं के कामों को ध्यान में रखते हुए मेरे पास एक भंडार है जहां बहुत सी बड़ी बाइनरी फ़ाइलें रहते हैं। क्या यह संभवतया केवल अंतिम संख्या में काम करने के लिए गिट सेट करता है? जैसे कि मैं केवल इस भंडार इतिहास में फाइलों की आखिरी 5 प्रतियां रखना चाहता हूं? लेकिन मैं इसे हर 5 कामों में मैन्युअल रूप से नहीं करना चाहूंगा?गिट

+1

मुझे शक है, लेकिन मुझे विचार पसंद है। –

उत्तर

3

"गिट रिबेस - इंटरटेक्टिव" का प्रयोग करें। पहले पांच कामों को "पिक" के रूप में चिह्नित करें और शेष को "स्क्वैश" के रूप में चिह्नित करें।

+0

जब अन्य रिपोज़ से खींचा जाता है जो सिंक भी होगा, हाँ? –

+0

क्लोन निर्देशिकाओं को हर बार जब आप इतिहास बदलते हैं तो पूर्ण रूप से परिवर्तित इतिहास को खींचना होगा, इसलिए क्लोन रिपोजिटरी से 'गिट फ़ेच' कुछ समय ले सकता है - लेकिन हाँ, वे सिंक हो जाएंगे। – Bombe

2

Kindasorta। git clone --depth N आपको भंडार के "उथले क्लोन" करने देगा। हालांकि, आप इसे से धक्का/क्लोन/नहीं ला सकते हैं, इसलिए यह डेवलपर के रूप में बहुत उपयोगी नहीं है।

+0

मुझे इसके बारे में पता है, लेकिन मैं रिपोन्स में न केवल 5 से अधिक प्रतियां रखना चाहता हूं, न केवल क्लोन। –

+0

यह संभव नहीं है, आपको रिपॉजिटरी को फिर से लिखना होगा क्योंकि @ डस्टिन सुझाव दे रहा है। मेरा सुझाव है कि आप फिर से मूल्यांकन करें कि आप इन विशाल फ़ाइलों को कैसे स्टोर करना चाहते हैं। शायद गिट सबसे अच्छा समाधान नहीं है। –

4

ऐसा करने का एकमात्र तरीका समय-समय पर भंडार को फिर से लिखना है।

एक प्रतिबद्धता में प्रतिबद्ध मेटा डेटा, प्रतिबद्ध जानकारी, प्रतिबद्धता के माता-पिता और पेड़ का एक हैश होता है। वर्तमान में प्रभावित किए बिना अतीत में कुछ बदलना संभव नहीं है।

3

जैसा कि डस्टिन ने उल्लेख किया है, ऐसा करने का एकमात्र तरीका समय-समय पर भंडार को फिर से लिखना है। गिट के पास निश्चित रूप से इसके लिए "अंतर्निर्मित" समर्थन नहीं है, और न ही जल्द ही इस तरह का समर्थन होने की संभावना है (इस प्रकार का मौलिक डिज़ाइन इस सुविधा को रोकता है)। इसका मतलब है कि यदि आप इसे करना चाहते हैं, तो आपको इसे मैन्युअल रूप से करना होगा।

यदि आप इसे आज़माएं, तो this question का उत्तर यह दिखाता है कि git filter-branch का उपयोग करके यह कैसे किया जा सकता है।