SORU
16 Mayıs 2009, CUMARTESİ


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
16 Mayıs 2009, CUMARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • New Scientist

    New Scientis

    27 Kasım 2006
  • Sam Kear

    Sam Kear

    14 Temmuz 2007