Hassas dosyaları silmek ve kendi Gıt tarihten taahhüt
Ama hassas veri ile belirli dosyaları içerir GitHub Git bir proje koymak için (kullanıcı adı ve şifre gibi /config/dağıtmak istiyorum.capistrano için rb).
Bu dosya adları eklemek biliyorum.gitignorebu Gıt içinde kendi geçmişini silmek olmaz ama.
Ben de tekrar /silerek başlamak istemiyorum.gıt dizin.
Bir şekilde kaldırmak için vartümGit tarihin belirli bir dosya izleri?
CEVAP
Tüm pratik amaçlar içinilkendişelenmen gereken şeyDEĞİŞEN ŞİFRELERİ!Uzak bir depo henüz başka bir yerde olup git depoyu tamamen yerel ya soru net değil; uzak ve diğerleri güvenli değil ise bir sorun var. Eğer herkes klonlanmış bu depoyu daha önce bunu hallet, onlar için de bir kopya şifreleri kendi yerel makine, ve hiçbir şekilde beni kuvveti onlara güncellemek için "sabit" sürümü ile gitti tarih. Yapabileceğin en güvenli şey, başka bir şey için şifre kullandım her yerde farklıdır.
Yolumdan, burada bunu düzeltmek için nasıl. GitHub answered exactly that question as an FAQ:
git filter-branch --index-filter \
'git update-index --remove filename' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force
GitHub ve diğerleri uzak depo klonlanmış gibi uzak bir depo için bu kodu itti ettik, şimdi sen kendini tekrarlıyorsun bir durumda olduğunuzu unutmayın. Diğerleri bundan sonra en son yaptığınız değişiklikler aşağı çekin çalıştığınızda bir ileti değişiklikleri bir ileri değil, çünkü uygulanabilir belirten alacaklar.
Bunu düzeltmek için ya da mevcut Depo ve re-clone onların silebilirsiniz, ya da "" git-rebase manpage. YUKARI REBASE KURTARMA altındaki yönergeleri takip etmek zorunda kalacaklar
Eğer yanlışlıkla hassas bilgiler ile bazı değişiklikler eğer gelecekte, ama dikkat edinönceuzak bir depo için bastırıyor, biraz daha kolay düzeltmeler vardır. Eğer dayanabilirsen hassas bilgileri eklemek için bir taahhüt, sadece hassas bilgileri kaldırın, çalıştırın:
git commit -a --amend
Daha önce yaptığınız herhangi bir yeni değişiklikleri yapıyor, tüm dosya çıkarma git rm
ile yapılan da dahil olmak üzere değiştirebilir. Eğer bu değişiklikler daha fazla geçmiş ama yine de uzak bir depo için değil itti, interaktif rebase yapabilirsiniz:
git rebase -i origin/master
O bir editör uzak depo ile son ortak atasından bu yana yaptığınız tamamlar açar. Değiştir" "satırları temsil eden bir taahhüt üzerinde" hassas bilgi ve Kaydet ve çık. düzenlemek için "Seç Git yapabileceğiniz değişiklikleri yürümek, ve bir yerde bırakın
$EDITOR file-to-fix
git commit -a --amend
git rebase --continue
Hassas bilgileri ile her değiştirin. Sonunda, şube geri bitireceğiz ve güvenli bir şekilde yeni değişiklikler zorlayabilir.
Nasıl Raylar geçiş 3 dosyaları silmek ...
HTML dosyaları doğrudan kendi kaynak g...
Tüm dosyaları " zaman 3 gün;bağıms...
Nasıl benim dosyaları yeniden yerel bi...
Nasıl X saatten daha eski dosyaları si...