2009-02-22 9 views
13

ऐसा लगता है कि मेरी प्रारंभिक प्रतिबद्धता अंतरिक्ष का 9 0% खा रही है, क्योंकि यह गलती से इसमें बहुत सारी मीडिया फाइलों के साथ बनाई गई है। क्या स्थानीय और रिमोट रिपोज़ से केवल पहली प्रतिबद्धता को हटाने का कोई तरीका है, या क्या मुझे इसे छोड़ना चाहिए?क्या मैं गिट रेपो से आरंभिक प्रतिबद्धता को हटा सकता हूं?

+1

वहाँ भी Git --root' rebase है '। विवरण के लिए निम्नलिखित SO उत्तर देखें: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert

उत्तर

20

ऐसा लगता है कि आप पहले से ही अन्य उपयोगकर्ताओं की संख्या के साथ भंडार साझा किया है। यदि यह मामला है, तो आपको शायद इसके साथ रहना चाहिए।

आप क्लोन के सभी के नियंत्रण में हैं, तो आप एक संशोधित रूट के शीर्ष पर इतिहास को फिर से लिख सकते हैं अनायास ही हटा दिया फ़ाइलों के साथ करते हैं। ध्यान दें कि यदि आप अन्य डेवलपर्स पहले ही इस शाखा से काम कर चुके हैं तो आपको ऐसा नहीं करना चाहिए।

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

यह मानते हुए कि अपने काम की निर्देशिका 'साफ़' है:

# Go back the initial commit 
git checkout <SHA1_of_old_root> 

# Clean up the index to remove unwanted files, e.g. using git rm <files> 
# ... 

# Amend the initial commit with the new tree. Note the sha1 of the new commit 
git commit --amend 

# Go back to the master branch 
git checkout master 

# Re-apply all the commits onto the new root 
git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root> 
2

वैकल्पिक रूप से आप git filter-branch उपयोग कर सकते हैं फ़ाइलें (उदाहरण अनुभाग देखें) हमलावर को दूर करने, लेकिन यह भी इतिहास को फिर से लिखने है। तो किसी को भी, जो अपने पुराने इतिहास बुरा आश्चर्य मिलेगा की चोटी पर उसकी/उसके कोड आधारित ...

+1

फ़िल्टर-शाखा भी बेहतर तरीके से सामना करेगी (या कम से कम कम बातचीत की आवश्यकता है) अवांछित फ़ाइलों में परिवर्तन रूट प्रतिबद्धता के बाद से ट्रैक किया गया है। –

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