# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( Upewnij się, aby popełnić pierwsze zmiany, które chcesz zachować , aby uniknąć incydentu jako jball037 komentarze poniżej . Opcja zachować swoje pliki nietknięty na dysku chociaż). --cached
ale niedopasowane pliki pozostaną w twoim repozytorium i będą musiały zostać jawnie usunięte poprzez umieszczenie ich ścieżki w podwójnych cudzysłowach:
Przekonałem się, że krok dodawania git jest niepotrzebny, kiedy uruchamiam status git po git rm - cache, usunięte pliki są już w obszarze testowym i możesz je po prostu zatwierdzić.
@VonC przepraszam, to nie miał być rant ani kij :) Ale tak, użyłem --cached i wszystkie moje niezaangażowane zmiany zostały utracone, kiedy sprawdziłem moje pliki. Przez chwilę spanikował, ale „git reset HEAD” przywrócił moje pliki (ale tym razem bez plików, które określiłem w .gitignore, więc twoje rozwiązanie nadal działa!)
jball037
3
@ jball037 Good. Dodałem ostrzeżenie i odpowiednio zredagowałem odpowiedź.
VonC
1
jeśli tylko przeczytam jedną linię dalej, zanim to zrobię ”(pamiętaj, aby najpierw zatwierdzić zmiany, które chcesz zachować, aby uniknąć incydentu jako jball037” #fml
Aiden Strydom
9
Mogę źle zrozumieć, ale czy próbujesz usunąć pliki, które zostały zignorowane, czy chcesz zignorować nowe modyfikacje tych plików? W tym przypadku rzecz działa.
Jeśli chcesz usunąć zignorowane wcześniej zatwierdzone pliki, użyj
Jest to bardzo proste, dlaczego należy usunąć pliki po aktualizacji mojego .gitignore Jednak wymaga kilku drobnych aktualizacji: `` git rm - buforowane git ls-files -i –exclude-standard git commit -m 'posprzątaj' '
Aaron
1
Wiem, że to stare pytanie, ale rozwiązanie Gracchusa nie działa, jeśli nazwy plików zawierają spacje. Rozwiązaniem VonC do nazw plików ze spacjami jest nieużywanie ich --ignore-unmatch, a następnie usuwanie ich ręcznie, ale nie będzie to działać dobrze, jeśli jest ich dużo.
Oto rozwiązanie wykorzystujące tablice bash do przechwytywania wszystkich plików.
Odpowiedzi:
Rozwiązanie wspomniane w „ Nie ignorowaniu pliku .gitignore ” jest nieco ekstremalne, ale powinno działać:
( Upewnij się, aby popełnić pierwsze zmiany, które chcesz zachować , aby uniknąć incydentu jako jball037 komentarze poniżej . Opcja zachować swoje pliki nietknięty na dysku chociaż).
--cached
Masz też inne, bardziej szczegółowe rozwiązanie w blogu „ Sprawianie, aby Git ignorował już śledzone pliki ”:
Bassim sugeruje w swoim wydaniu :
Pliki ze spacją na ścieżkach
źródło
Mogę źle zrozumieć, ale czy próbujesz usunąć pliki, które zostały zignorowane, czy chcesz zignorować nowe modyfikacje tych plików? W tym przypadku rzecz działa.
Jeśli chcesz usunąć zignorowane wcześniej zatwierdzone pliki, użyj
źródło
git ls-files -i –exclude-standard
git commit -m 'posprzątaj' 'Wiem, że to stare pytanie, ale rozwiązanie Gracchusa nie działa, jeśli nazwy plików zawierają spacje. Rozwiązaniem VonC do nazw plików ze spacjami jest nieużywanie ich
--ignore-unmatch
, a następnie usuwanie ich ręcznie, ale nie będzie to działać dobrze, jeśli jest ich dużo.Oto rozwiązanie wykorzystujące tablice bash do przechwytywania wszystkich plików.
źródło