2010-01-05 6 views
31

Veritabanımı GIT'e yedekledim, böylece db'yi bilgisayarımdan alabilirim.GIT'de saklanan bir dosya nasıl kalıcı olarak silinir?

Bu dosyanın sürümünün olmasını istemiyorum, yalnızca 1 zaman meselesiydi.

Bunu iyi için silebilir miyim, dolayısıyla GIT ileriye mi yoksa geçmişe mi devam etmez?

+0

olası yinelenen (http://stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits- from-git-history) – CharlesB

+0

olası kopyası [Tüm Git deposunun tamamlanma geçmişinden dosyayı tamamen kaldır] (http://stackoverflow.com/questions/307828/completely-remove-file-from-all-git-repository-commit- tarih) –

cevap

57

Her zaman Guides: Completely remove a file from all revisions feed yardımcı buluyorum.

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

Bu komut herhangi bir dosyayı Rakefile katılan taahhüt değişen her şube ve etiketin tüm geçmişi çalışır ve herhangi bir hareketin kaydedilmesini sonradan:

Rakefile adlı dosyayı kaldırın. Daha sonra boş olan numaralı Komisyonlar (yalnızca Rakefile değiştirdiklerinden) tamamen kaldırılmıştır. remote repository için

+3

teşekkürler, bu gerçekten işe yarıyor! Ayrıca ekleyebilir: git push --all --force –

+2

Teşekkürler. Birkaç denememi aldı çünkü dosyaya tam göreli yol vermedim (kökten) ve sadece dosya ismini aldım. – mdiehl13

+1

Uzaktaki bir depoda ('git push --all --force') bir yeniden yazmayı yeniden yazmak istediğinizde akranlarınızı her zaman uyarmayı unutmayın, aksi takdirde çekerken her türlü problemle karşılaşırlar. – pedromanoel

18

Güncelleme:

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

dosya ile folderName değiştirmek veya size verilen git deposundan kaldırmak istediğiniz klasörü.

rm -rf .git/refs/original/ 

git reflog expire --expire=now --all 

git gc --prune=now 

git gc --aggressive --prune=now 

Şimdi Uzak depo

git push --all --force 

Bu uzaktan depo temizlemek istiyorum tüm değişiklikleri itin.

3

Ayrıca bfg'yi kolaylıkla kullanabilirsiniz.

Çılgın Büyük Files Çıkarma Şifreler, Kimlik & diğer Kişisel veriler Çıkarma:

BFG senin Git deposu tarihin dışına kötü veri temizliği için git-filtre-dalına basit, daha hızlı bir alternatiftir

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

Ya da sadece bazı dosyasının tüm oluşumları değiştirin:

$ bfg --replace-text passwords.txt 

onay https://rtyley.github.io/bfg-repo-cleaner/ ve https://help.github.com/articles/removing-sensitive-data-from-a-repository/

[duyarlı dosya ve Git geçmişinden onların kaydedilmesini çıkarın] arasında