2017-07-07 126 views
5

Arkadaşım, apikey/jeton/sırlarımızı tutan bir yapılandırma dosyası oluşturdu ve .gitignore adı verilen dosyayı yoksaydı. Birisi yanlışlıkla başka bir isim olarak kaydedilmiş yapılandırma dosyası ile ana dalına itti ve şimdi gösteriyor.GitHub, geçmişi ile birlikte nasıl kaldırılır?

Bu taahhüdü ve bu taahhütün geçmişini silmenin bir yolu olup olmadığını merak ediyordum.

Bunu gördüm (aşağıda) ve bunun değerini sileceğini ve her şeyi yeniden iteceğini anlıyorum. aşağıdaki gibi

git reset --hard hash# 

git push -f origin branch 
+0

GitHub Yardım sayfaları tam olarak bu olayıyla ilgili bir şey (vardır Özel bilgi GitHub'a itti) ... Bir cevaba dönüştürürdüm ama şu an cep telefonundayım [bakın burada ...] (https://help.github.com/articles/removing-sensitive-data- bir depodan /) – Mischa

+0

@MischaBehrend THANKS! Ben google haha ​​doğru anahtar kelimeler ile arama değildi sanırım - bu çok yararlı bir sayfa –

cevap

2

git-filter-branch sizin durumunuzda size yardımcı olabilir:

kaldırmak istediğiniz Yapılandırma dosyanıza yol ile PATH-TO-YOUR-CONFIG-FILE değiştirin Ama hala geçmiş/değişiklikleri yoluyla yapılandırma bilgisi gösterir sadece dosya adı değil.

git filter-branch --force --index-filter \ 
'git rm --cached --ignore-unmatch PATH-TO-YOUR-CONFIG-FILE' \ 
--prune-empty --tag-name-filter cat -- --all 

komutları altında takip, yanlışlıkla tekrar işlemek etmediğinden emin taahhüt ve onu itmek için .gitignore için yapılandırma dosyasını ekleyin:

echo "YOUR-CONFIG-FILE" >> .gitignore 
git add .gitignore 
git commit -m "Add YOUR-CONFIG-FILE to .gitignore" 
git push origin --force --all 
+0

Bu (tüm tarihini yeniden yazma gibi) değişiklikleri hashes değiştiğine dikkat edin. Bu özellikle başkalarıyla çalışırken önemli bir sorun olabilir. Ayrıca, kimlik bilgilerinizin geçmişten kaldırılması yeterli değildir. _must_ geçersiz kılınmış ve yeniden yaratılmışlardır. Bu, yeniden yazmanın değerini azaltır. Lütfen dikkatli ol. – Chris