GitHub hesabımdaki bir havuz üzerinde çalışıyordum ve bu durum tökezlediğim bir sorun.
- Birkaç npm paketi kurulu bir klasör içeren Node.js projesi
- Paketler
node_modules
klasördeydi - Git deposuna bu klasörü ekledi ve kodu github'a itti (o sırada npm kısmı hakkında düşünmüyordu)
- Kodun bir parçası olmak için bu klasöre gerçekten ihtiyaç duymadığınızı fark ettiniz
- O klasörü sildi, itti
Bu durumda, toplam git repo'sunun boyutu 6MB civarındaydı ve burada gerçek kod (bu klasör hariç tümü) sadece 300 KB civarındaydı .
Şimdi sonunda aradığım şey, git paketinin geçmişinden bu paket klasörün ayrıntılarından kurtulmanın bir yoludur, bu yüzden birisi onu klonlarsa, alacakları gerçek dosyaların nereden alınacağını 6mb değerinde tarih indirmek zorunda kalmazlar. son taahhüt itibariyle 300KB olacaktır.
Bunun için olası çözümlere baktım ve bu 2 yöntemi denedim
- Git deposundan dosyayı kaldır (geçmiş)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Gist senaryoyu çalıştırdıktan sonra o klasörden kurtulduğunu ve bundan sonra 50 farklı taahhüdün değiştirildiğini gösterdi. Ama bu kodu itmeme izin vermedi. Ben itmeye çalıştığımda, dedi Branch up to date
ama 50 taahhütleri a git status
. Diğer 2 yöntem de yardımcı olmadı.
Şimdi o klasörün geçmişinden kurtulduğunu göstermesine rağmen, localhost'umdaki bu repo büyüklüğünü kontrol ettiğimde, hala 6MB civarındaydı. (Ayrıca refs/original
klasörü sildim ama repo boyutundaki değişikliği görmedim).
Açıklığa kavuşturmaya çalıştığım şey, yalnızca taahhüt geçmişinden kurtulmanın bir yolu varsa (ki bu olduğunu düşündüğüm tek şey) değil, aynı zamanda bu dosyaların git bir geri almak istediğini varsayarak tutuyor.
Bunun için bir çözüm sunulduğunu ve localhost'umda uygulandığını ancak GitHub repo'suna çoğaltılamayacağını söyleyelim, bu repoyu klonlamak, ilk işleme geri dönme hile yapmak ve itmek (veya git anlamına gelir mi) hala tüm bu taahhütlerin bir geçmişi var mı? - aka. 6MB).
Buradaki son hedefim, temelde git'ten klasör içeriğinden kurtulmanın en iyi yolunu bulmak, böylece bir kullanıcının 6MB değerinde bir şey indirmek zorunda kalmaması ve yine de modüller klasörüne asla dokunmayan diğer taahhütlere sahip olması (bu güzel bunların çoğu) git'in tarihinde.
Bunu nasıl yapabilirim?