Czasami zdarzy się, że dodasz jakiś plik do repozytorium a dopiero później stwierdzisz, że dodasz go do .gitignore aby był ignorowany. Niestety nie jest to takie proste. Nie można go po prostu usunąć z repozytorium ponieważ przy pierwszym pull’u plik zostanie również usunięty z lokalnych klonów.
Nie wiem czy dobrze się wysłowiłem, jest trochę późno i możliwe, że piszę to przez sen 😛 Teraz na poważnie. W takiej sytuacji przychodzi nam z pomocą polecenie rm z flagą –cached. Dzięki czemu plik zostaje usunięty jedynie z indexu gita.
git rm --cached plik.txt
Jeżeli mamy w repozytorium niezliczoną ilość plików, które nie powinny się w nim znaleźć możemy skorzystać z sekwencji komend:
git rm -r --cached . git add . git commit -m "porządek w repozytorium"
Działa to bardzo sprawnie choć wydaje się dosyć drastycznym posunięciem. W pierwszej kolejności „wyindeksowywujemy” całą zawartość repozytorium następnie dodajemy wszystkie pliki z powrotem. Ponowne dodanie uwzględni już wszystkie dodane w międzyczasie reguły .gitignore. Zapanuje tym samym nowy porządek 🙂
Jeżeli często musisz robić porządek w repozytorium polecam utworzenie aliasu:
# fix .gitignore
fixgitignore = !git rm -r --cached . && git add . && git commit -m \"gitignore fix\"
Gdzieś podpatrzyłem 🙂 Może akurat się komuś przyda.