2012-10-26 16 views
6

मेरे पास 3 वर्षों में एक बड़ी भंडार गिट है, मैं एक वर्ष पहले से अधिक परिवर्तनों का इतिहास हटाना चाहता हूं। क्या यह संभव है? गिट रिबेस का उपयोग कर सकते हैं लेकिन कैसे?गिट हटाने इतिहास

+0

गिट आपके परिवर्तनों को सहेजने के लिए बनाया गया है। इतिहास हटाने का क्या प्रभाव है? –

+0

मेरा इतिहास यह बहुत बड़ा है, जीआईटी डीआईआर 400 एमबी से बड़ा है, प्रत्येक क्लोन में मुझे यह सब इतिहास डाउनलोड करना होगा :( – paweb

+0

संभावित डुप्लिकेट: [मैं गिट रिपॉजिटरी से पुराने इतिहास को कैसे हटा सकता हूं?] (Http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –

उत्तर

0

इतिहास हटाने से शायद आपकी समस्या ठीक नहीं होगी। संभावना है कि, कुछ समय पर, भंडार के लिए एक बड़ी फाइल प्रतिबद्ध थी और बाद में हटा दी गई।

मैं Find files in git repo over x megabytes, that don't exist in HEAD पर एक नज़र डालेगा।

3

git replace नामक काले जादू की जांच this article from the Pro Git book में करें जो आपके सटीक परिस्थितियों का उपयोग उदाहरण के रूप में करती है। असल में, यदि आप इतिहास में एक बिंदु पा सकते हैं कि आप नई जड़ के रूप में कार्य करना चाहते हैं, तो आप इसे उस प्रतिबद्धता के साथ प्रतिस्थापित कर सकते हैं जिसमें माता-पिता नहीं हैं, जैसे कि यह पतली हवा से बना है। आप मूल पेड़ को एक मशीन पर भी स्टोर कर सकते हैं, जिससे आपको इतिहास को पुनर्स्थापित करना आसान हो जाता है यदि आपको इसकी आवश्यकता हो।

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

+1

जो मैंने पढ़ा , 'गिट प्रतिस्थापन' चीज बदलती-हैश-समस्या के आसपास काम नहीं करेगी। –

+1

@ जोनास आप सही हैं। यह स्पष्ट करने के लिए मेरा उत्तर पुनर्गठित किया गया। –

+1

बढ़िया! यह गिट में भी एक बड़ी बग होगी आप हैश में किसी भी बदलाव के बिना इतिहास के पूरे समूह को प्रतिस्थापित कर सकते हैं। आखिरकार, उन क्रिप्टोग्राफिक हैंश गिट का उपयोग करने के कारणों में से एक हैं। –

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