Dlaczego .gitignore nie ignoruje moich plików?


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.


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.


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ć.


7

Możesz tego użyć,

git rm -r --cached ./node_modules

jeśli chcesz na przykład zignorować node_modules


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


0

Najpierw usuń plik index.lock z repozytorium git

rm -f .git/index.lock

a następnie dodaj .gitignore

git add .gitignore
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.