Mam repozytorium git hostowane na Github. Po popełnieniu wielu plików, mam świadomość, że muszę stworzyć .gitignore
i uwzględniają .exe
, .obj
plików.
Czy jednak automatycznie usunie te zatwierdzone pliki z repozytorium? Czy jest jakiś sposób, aby to wymusić?
Odpowiedzi:
Nie, nie można wymusić usunięcia pliku już zatwierdzonego w repozytorium tylko dlatego, że jest on dodany do pliku
.gitignore
Musisz
git rm --cached
usunąć pliki, których nie chcesz w repozytorium. (- buforowane, ponieważ prawdopodobnie chcesz zachować lokalną kopię, ale usunąć z repozytorium). Więc jeśli chcesz usunąć wszystkie pliki exe z repo, wykonaj(Zauważ, że gwiazdka * jest cytowana z powłoki - pozwala to git, a nie powłoce, rozwinąć ścieżki do plików i podkatalogów)
źródło
git rm /\*.exe
, usuniesz wszystkie pliki exe z twojego repogit
.git pull
zobaczą, że ich pliki zostaną usunięte.Nie. Nawet przy istniejącym pliku
.gitignore
możesz zignorować pliki zignorowane za pomocą-f
flagi (force). Jeśli pliki są już zatwierdzone, nie zostaną automatycznie usunięte.źródło
Jeśli zmiany nie zostały jeszcze wprowadzone:
źródło
Musiałem usunąć .idea i foldery docelowe, a po przeczytaniu wszystkich komentarzy to zadziałało dla mnie:
a następnie naciśnij, aby opanować
źródło
.idea
to był mój problem. Myślę, że to też był twój:)
Nie.
„Najlepszym” sposobem na zrobienie tego jest użycie,
git filter-branch
jak napisano tutaj:Strona podręcznika dla git-filter-branch zawiera wyczerpujące przykłady.
Uwaga Będziesz ponownie pisać historię. Jeśli opublikowałeś jakiekolwiek poprawki zawierające przypadkowo dodane pliki, może to powodować problemy dla użytkowników tych publicznych oddziałów. Poinformuj ich, a może pomyśl o tym, jak bardzo musisz usunąć pliki.
Uwaga W obecności tagów zawsze używaj
--tag-name-filter cat
opcji dogit filter-branch
. Nigdy nie boli i oszczędza ci bólu głowy, gdy później uświadomisz sobie, że potrzebujesz goźródło
--all
aby przepisać wszystkie (lokalne) gałęzie jednocześnieNawet po usunięciu pliku (plikach), a następnie zatwierdzeniu, nadal będziesz mieć te pliki w historii. Aby je usunąć, rozważ użycie BFG Repo-Cleaner . Jest to alternatywa dla git-filter-branch.
źródło