2011-11-01 16 views
5

दुर्भाग्य से हमने कुछ समय पहले एक बड़ी बाइनरी फ़ाइल में गलती से जांच की और आज तक कोई भी ध्यान नहीं दिया। अब मैं उस प्रतिबद्धता को छोड़ना चाहता हूं और शेष इतिहास जैसा है। मैं धक्का इतिहास बदलने की चेतावनी के बारे में जानता हूं लेकिन इस मामले में मैं इससे बच नहीं सकता।ड्रॉप पुरानी प्रतिबद्धता: 'गिट रिबेस' कारण विवादों को मर्ज करने का कारण बनता है

मैं ~ 1h के लिए इसे प्राप्त करने की कोशिश कर रहा हूं लेकिन इसे पाने में विफल रहा हूं। मुझे मिली सबसे अच्छी कमांड

git rebase --interactive --preserve-merges $(EVIL_COMMIT)^ 

और संपादक में पहली प्रतिबद्धता को टिप्पणी करने वाला बुराई है।

दुर्भाग्यवश git rebase मर्ज विवादों के मैन्युअल रिज़ॉल्यूशन के लिए विलय और संकेतों पर रोकता है। बुराई प्रतिबद्धता केवल कुछ उदाहरण फाइलें जोड़ती है जो हमारे सॉफ़्टवेयर परीक्षण उद्देश्यों के लिए गणना करेंगे। इस प्रकार उन्हें मिसाल वाली फाइल फाइलों के साथ कोई संघर्ष नहीं होना चाहिए।

  1. मुझे समझ में नहीं आता कि विलय संघर्ष कहां से उत्पन्न होते हैं। कोई समझा सकता है?
  2. इसे कैसे हल करें?

मैंने Google और SO खोज में काफी समय बिताया है। कुछ धागे एक समान विषय को कवर करते हैं लेकिन syntax used is not available आज के गिट संस्करण में या तो यह मेरे लिए काम नहीं करता है (मैंने केवल ऊपर एक विधि वर्णित की है क्योंकि यह सबसे आसान तरीका है)।

+0

संभव डुप्लिकेट गिट भंडार में इतिहास?] (http://stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-commit-history-in-git-repository) –

उत्तर

6

मैं filter-branch के साथ जाना चाहते हैं:

git filter-branch --prune-empty --index-filter ' 
    git rm --cached --ignore-unmatch path/to/file 
' --all 
+0

यह केवल हटा देता है सभी संशोधनों से फ़ाइल 'पथ/से/फ़ाइल', सही है? जहां तक ​​मैं समझता हूं कि यह उस प्रतिबद्धता को नहीं हटाता है जो बाइनरी हटाने के बाद खाली छोड़ा जाएगा (वास्तव में उनमें से 4 हैं)। –

+2

फ़िल्टर शाखा कमांड में '--prune-खाली 'जोड़ें। –

+1

मुझे लगता है कि आप इस जवाब में '$ (EVIL_COMMIT) ^' के बजाय 'HEAD' का अर्थ है - अन्यथा यह केवल बड़ी फ़ाइल पेश करने वाले व्यक्ति के सामने एक ही को फ़िल्टर करेगा। –

0

मेरे दोस्त Git इतिहास से फाइल के शुद्धिकरण के लिए एक सुविधाजनक स्क्रिप्ट शुरू कर दिया, जाँच https://github.com/donquixote/gitpurge

की [निकालने का तरीका/प्रतिबद्ध से एक बड़ी फ़ाइल को नष्ट
संबंधित मुद्दे