Wyczyść lokalną pamięć podręczną git

92

Mam projekt Webstorm, który zamierzałem zatwierdzić, ale przed naciśnięciem przycisku zatwierdzenia w interfejsie GUI Git Windows przypomniałem sobie, że nie chcę zatwierdzać .ideazawartości mojego folderu.

Skorzystałem więc ze strony internetowej, która generuje się automatycznie .gitignoresdla niektórych IDE i dodałem ją do mojego .gitignorepliku.

Wszystkie .ideapliki, które są jawnie ignorowane, nadal pojawiają się do zatwierdzenia, mimo że usunąłem i ponownie dodałem te pliki.

Popełniłem również plik gitignore bez żadnych innych plików i ponownie wkleiłem zawartość, ale nadal nie ignoruje plików .idea.

Jak powiedzieć Gitowi, aby odświeżył lub wyczyścił pamięć podręczną?
Próbowałem / włączyłem się do katalogu, o którym mowa, i wpisałem

git clean -n

ale nie pojawiają się żadne pliki.

jozenbasin
źródło

Odpowiedzi:

120

Wszystkie pliki .idea, które są jawnie ignorowane, nadal są wyświetlane do zatwierdzenia

musisz je usunąć ze strefy przeciwności

git rm --cached .idea

teraz musisz zatwierdzić te zmiany i od tego momentu będą one ignorowane.
Gdy git zacznie śledzić zmiany, nie przestanie ich śledzić, nawet jeśli zostały dodane .gitignorepóźniej do pliku.

Państwo musi wyraźnie je usunąć, a następnie popełnić swój usunięcie ręcznie, aby w pełni je zignorować.


wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

CodeWizard
źródło
3
Jednak nigdy nie zatwierdzam plików, które próbuję zignorować. To mi mówifatal: pathspec '.idea' did not match any files
jozenbasin
Kiedy wpisujesz status git, czy je widzisz? WebStorm mógł je dodać, jeśli zaznaczyłeś pole wyboru, aby automatycznie dodawać pliki
CodeWizard
2
Nie mam pojęcia, ale wygląda na to, że polecenie, które mi dałeś, zadziałało, mimo że zwróciło błąd krytyczny… Pliki nie pojawiają się już do zatwierdzenia.
jozenbasin
możesz rozważyć dodanie -rdo usuwania rekurencyjnego
Vishrant
79

Kiedy myślisz, że twój git jest pomieszany, możesz użyć tego polecenia, aby zrobić wszystko na bieżąco.

git rm -r --cached .
git add .
git commit -am 'git cache cleared'
git push

Aby cofnąć ostatnie zatwierdzenie, użyj tego:

git reset HEAD^ --hard
Kamal Kumar
źródło
6
Nie używaj git push, jeśli nie chcesz wypychać zmian do pilota. Jeśli jednak tak, przejdź do zakładki kontroli wersji u dołu studia Android, kliknij prawym przyciskiem myszy poprzednie zatwierdzenie i wybierz „Zresetuj bieżącą gałąź do tego miejsca”
Swapnil
część resetująca była w najlepszym razie myląca. ale zrobiłem „git push” i było w porządku.
Seun S. Lawal
6

jeśli zrobisz jakiekolwiek zmiany na git ignore, musisz również wyczyścić cache git

> git rm -r --cached . 
> git add . 
> git commit -m 'git cache cleared'
> git push

jeśli chcesz usunąć określony folder lub plik

git rm  --cached filepath/foldername
Akshay Kumar
źródło
3
git rm --cached *.FileExtension

To musi ignorować wszystkie pliki z tego rozszerzenia

Allan Ferraz
źródło
3

po tej zmianie w pliku git-ignore uruchom to polecenie, to polecenie usunie całą pamięć podręczną plików, a nie pliki lub zmiany

git rm -r --cached.

po wykonaniu tego polecenia zatwierdź pliki

do usuwania pojedynczego pliku lub folderu z pamięci podręcznej użyj tego polecenia

git rm --cached ścieżka pliku / nazwa folderu

Akshay
źródło
2

Aby usunąć buforowany .idea / katalog. na przykładgit rm -r --cached .idea

Max Droid
źródło