Pracowałem nad repozytorium na moim koncie GitHub i na ten problem natknąłem się.
- Projekt Node.js z folderem z zainstalowanymi kilkoma pakietami npm
- Paczki były w
node_modules
folderze - Dodałem ten folder do repozytorium git i przekazałem kod do github (nie myślałem wtedy o części npm)
- Uświadomiłem sobie, że tak naprawdę nie potrzebujesz, aby ten folder był częścią kodu
- Usunąłem ten folder, wypchnąłem go
W tym przypadku całkowity rozmiar repozytorium git wynosił około 6 MB, a rzeczywisty kod (wszystkie oprócz tego folderu) miał tylko około 300 KB .
Teraz w końcu szukam sposobu, aby pozbyć się szczegółów tego folderu pakietu z historii gita, więc jeśli ktoś go sklonuje, nie będzie musiał pobierać historii o wartości 6 MB, z której będą pobierać jedyne rzeczywiste pliki od ostatniego zatwierdzenia wynosiłby 300 KB.
Szukałem możliwych rozwiązań tego problemu i wypróbowałem te 2 metody
- Usuń plik z repozytorium git (historia)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Wydawało się, że Gist działał, gdy po uruchomieniu skryptu pokazał, że pozbył się tego folderu, a następnie zmodyfikował 50 różnych zatwierdzeń. Ale nie pozwoliło mi to przepchnąć tego kodu. Kiedy próbowałem to przeforsować, napisałem, Branch up to date
ale pokazałem, że 50 zatwierdzeń zostało zmodyfikowanych po git status
. Pozostałe 2 metody też nie pomogły.
Teraz, mimo że pokazało, że pozbył się historii tego folderu, kiedy sprawdziłem rozmiar tego repozytorium na moim lokalnym hoście, nadal miał około 6 MB. (Ja również usunąłem refs/original
folder, ale nie zauważyłem zmiany rozmiaru repozytorium).
Chciałbym wyjaśnić, czy istnieje sposób, aby pozbyć się nie tylko historii zatwierdzeń (co wydaje mi się jedyną rzeczą, która się wydarzyła), ale także tych plików, które git ciągle zakłada, że chce się wycofać.
Powiedzmy, że rozwiązanie zostało przedstawione w tym celu i jest zastosowane na moim lokalnym hoście, ale nie można go odtworzyć w tym repozytorium GitHub, czy można sklonować to repo, przywrócić do pierwszego zatwierdzenia wykonać lewę i wcisnąć (lub czy to oznacza, że git będzie nadal masz historię tych wszystkich zmian? (inaczej 6 MB).
Moim ostatecznym celem jest po prostu znalezienie najlepszego sposobu na pozbycie się zawartości folderu z git, aby użytkownik nie musiał pobierać rzeczy o wartości 6 MB i nadal mógł mieć inne zatwierdzenia, które nigdy nie dotknęły folderu modułów (to całkiem ładnie wiele z nich) w historii gita.
W jaki sposób mogę to zrobić?