2010-01-05 17 views
31

मैंने अपने डेटाबेस को जीआईटी में बैक अप लिया ताकि मैं अपने घर के कंप्यूटर पर डीबी प्राप्त कर सकूं।जीआईटी में संग्रहीत फाइल को स्थायी रूप से कैसे हटाएं?

मैं नहीं चाहता कि यह फ़ाइल संस्करणित हो, यह वास्तव में केवल 1 बार की बात थी।

क्या मैं इसे अच्छे से हटा सकता हूं ताकि जीआईटी आगे या ऐतिहासिक रूप से आगे बढ़ने का ट्रैक न रख सके?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits- से-गिट-इतिहास) – CharlesB

+0

संभावित गलती [सभी गिट भंडार प्रतिबद्धता इतिहास से पूरी तरह से हटाएं फ़ाइल] (http://stackoverflow.com/questions/307828/completely-remove-file-from-all-git-repository-commit- इतिहास) –

उत्तर

57

मुझे हमेशा Guides: Completely remove a file from all revisions feed सहायक लगता है।

git filter-branch --force --index-filter \ 
  'git rm --cached --ignore-unmatch Rakefile' \ 
  --prune-empty --tag-name-filter cat -- --all 

यह आदेश, हर शाखा और टैग के पूरे इतिहास में चलेंगे बदलते किसी भी प्रतिबद्ध उस फ़ाइल Rakefile शामिल है, और किसी भी प्रतिबद्ध बाद में:

फ़ाइल Rakefile बुलाया निकालने के लिए। जो बाद में खाली हैं (क्योंकि वे केवल रेकैकाइल बदल चुके हैं) पूरी तरह से हटा दिए गए हैं। remote repository के लिए

+3

धन्यवाद, वास्तव में काम करता है! आप यह भी जोड़ सकते हैं: गिट पुश --all --force –

+2

धन्यवाद। यह मुझे कुछ प्रयास करता है क्योंकि मैंने फ़ाइल (रूट से) के पूर्ण सापेक्ष पथ प्रदान नहीं किया था, और बस फ़ाइल नाम था। – mdiehl13

+1

जब आप रिमोट रिपोजिटरी ('गिट पुश --all --force') पर एक इतिहास फिर से लिखना चाहते हैं, तो हमेशा अपने सभी सहकर्मियों को चेतावनी देना याद रखें, या फिर उन्हें खींचने के दौरान सभी प्रकार की समस्याओं का सामना करना पड़ेगा। – pedromanoel

18

अद्यतन:

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch FOLDERNAME" -- --all 

फ़ाइल के साथ फ़ोल्डर बदलने के लिए या आप दिया Git भंडार से निकालना चाहते हैं फ़ोल्डर।

rm -rf .git/refs/original/ 

git reflog expire --expire=now --all 

git gc --prune=now 

git gc --aggressive --prune=now 

अब दूरदराज के भंडार

git push --all --force 

इस दूरदराज के भंडार को साफ करेंगे के सभी परिवर्तनों को धक्का।

3

आप आसानी से बीएफजी का भी उपयोग कर सकते हैं।

पागल बिग फ़ाइलें निकाला जा रहा है पासवर्ड, साख & अन्य निजी डेटा को निकालने में:

बीएफजी एक सरल, तेजी से अपना Git भंडार इतिहास से बाहर बुरा डेटा सफाई के लिए Git फिल्टर शाखा करने के लिए वैकल्पिक है

$ bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA 

या बस कुछ फ़ाइल की सभी घटनाओं की जगह:

$ bfg --replace-text passwords.txt 

जांच https://rtyley.github.io/bfg-repo-cleaner/ और https://help.github.com/articles/removing-sensitive-data-from-a-repository/

की [संवेदनशील फ़ाइलें और Git इतिहास से उनके प्रतिबद्ध निकालें]
संबंधित मुद्दे