Dlaczego .gitignore nie ignoruje moich plików?

128

Zobacz obrazek poniżej. Mój plik .gitignore powinien ignorować wszystkie pliki w src / dist, ale tak nie jest.

wprowadź opis obrazu tutaj

Richard
źródło

Odpowiedzi:

220

.gitignoreignoruje tylko pliki, które nie są jeszcze częścią repozytorium. Jeśli git addedytowałeś już jakieś pliki, ich zmiany będą nadal śledzone. Aby usunąć te pliki z repozytorium (ale nie z systemu plików), użyj git rm --cachedna nich.

Elmar Peise
źródło
9
git rm --cached nazwa_pliku.ext wroks dobrze, żebym zaktualizował gitignore dla jednego pliku. dzięki.
sybozz
3
Zrobiłem to, ale GitHub nadal chce je śledzić i dodawać.
Netside
94

Plik .gitignore zapewnia, że ​​pliki, które nie są śledzone przez Git, pozostaną niezamierzone.

Samo dodanie folderów / plików do pliku .gitignore nie spowoduje ich wyśledzenia - pozostaną one śledzone przez Gita.

Aby usunąć śledzenie plików, konieczne jest usunięcie z repozytorium śledzonych plików wymienionych w pliku .gitignore. Następnie dodaj je ponownie i zatwierdź zmiany.

Najłatwiejszym i najdokładniejszym sposobem na to jest usunięcie i buforowanie wszystkich plików w repozytorium, a następnie dodanie ich z powrotem. Wszystkie foldery / pliki wymienione w pliku .gitignore nie będą śledzone. Z górnego folderu w repozytorium uruchom następujące polecenia:

git rm -r --cached . git add .

Następnie zatwierdź zmiany:

git commit -m "Untrack files in .gitignore"

Należy pamiętać, że wszelkie poprzednie zatwierdzenia z niechcianymi plikami pozostaną w historii zmian. Podczas wypychania do GitHub pamiętaj o historii zatwierdzeń, która może zawierać pliki .envlub client_secret.json.

Najlepszą praktyką jest utworzenie pliku .gitignore i wypełnienie go folderami / plikami, których nie chcesz śledzić podczas rozpoczynania projektu. Jednak często konieczne jest dodanie do pliku .gitignore po stwierdzeniu, że niechciane pliki są śledzone i przechowywane.

MarckK
źródło
Dziękuję za Twoją odpowiedź. To naprawdę pomogło. Nie zapomnij też przesunąć repozytorium do góry
Chris Reed
Po użyciu git rm -r --cached .wycofania wszystkich zmian działa również ponowne dodanie wszystkich plików, które nie powinny być wykluczone z .gitignore .
Adam Hurwitz
8

gitignore ignoruje tylko nieśledzone pliki. Twoje pliki są oznaczone jako zmodyfikowane - co oznacza, że ​​zostały zatwierdzone, przeszłość i są teraz śledzone przez git.

Aby je zignorować, musisz najpierw je usunąć git rm, zatwierdzić, a następnie zignorować.

Igal S.
źródło
7

Możesz tego użyć,

git rm -r --cached ./node_modules

jeśli chcesz na przykład zignorować node_modules

sam r
źródło
4

Spójrz na to: .gitignore nie działa A szczególnie uwaga z ADTC:

Upewnij się, że plik .gitignore używa kodowania ANSI lub UTF-8. Jeśli używa czegoś innego, jak Unicode BOM, możliwe, że Git nie może odczytać pliku. - ADTC, 14 grudnia 2017 o 12:39

Philippe Raemy
źródło
0

Najpierw usuń plik index.lock z repozytorium git

rm -f .git/index.lock

a następnie dodaj .gitignore

git add .gitignore
KayV
źródło