2012-02-08 9 views
5

मुझे तीन साल की पावरबिल्डर बाइनरी फाइलों के साथ एक गिट रेपो मिला है। रेपो बहुत बड़ा है (केवल 10 जीबी से कम), मुझे लगता है कि गिट बाइनरी डेल्टा के लिए इतना ही कर सकता है।बाइनरी से भरे गिट रेपो पर पुराने इतिहास को फेंकना

मैं इस रेपो को एक प्रबंधित आकार में प्राप्त करना चाहता हूं, और मैं इसे करने के लिए प्रारंभिक इतिहास का एक गुच्छा फेंकने को तैयार हूं। मैं समझ नहीं पा रहा हूं कि इसे करने के लिए गिट कैसे प्राप्त करें। मैंने इंटरैक्टिव रीबेस के साथ स्क्वैशिंग करने की कोशिश की, लेकिन यह उन संघर्षों के समूह के साथ आता है जिनसे मैं निपटना नहीं चाहता हूं।

क्या कोई प्रतिबद्धता लेने का कोई तरीका है, और बस इससे पहले सब कुछ फेंक दें? मुझे एहसास है कि यह बाद के कामों के लिए एसएचए -1 को फिर से लिख देगा, जो कोई समस्या नहीं है।

+0

आप निश्चित रूप से रीबेज और स्क्वैश का उपयोग करके सभी पूर्व प्रतिबद्धताओं को कॉम्पैक्ट कर सकते हैं। मैं अभी भी ऐसा करने के लिए एक सुरुचिपूर्ण/तेज़ तरीका सोच रहा हूं यदि आपके पास बहुत सारे काम हैं। – TheBuzzSaw

उत्तर

0

आप पूरे शो को एक ही प्रतिबद्धता में वापस कर सकते हैं।

तरह

git rebase -i [some early commit] 

और फिर vim में दृश्य ब्लॉक मोड का उपयोग कर उनमें से लगभग सभी छुटकारा पाने के लिए सबसे आसान होगा कुछ है, एक fsck और gc रन का स्थान है।

वैकल्पिक रूप से, आप पेड़ से पूरी तरह से काम को हटाने के लिए git filter-branch का उपयोग कर सकते हैं।

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

ऊपर के उदाहरण रेंज master~5..master में प्रतिबद्ध लेने के लिए और है कि से बाहर नया रेपो पैदा करेगा:

1

यह एक (अन्य) तरीका है। आप एक ही रेपो का भी उपयोग कर सकते हैं, लेकिन उपर्युक्त सुरक्षित होगा।

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