Pomyślałem, że wtrącę się w to. Jest jeszcze jeden powód, dla którego wydaje się, że globalny plik ignorowania nie działa. Jest to coś, o czym nie sądzę, by zostało uwzględnione we wcześniejszych odpowiedziach. To tak oślepiająco oczywiste, że - oczywiście - bardzo łatwo go przeoczyć.
To znaczy, że git będzie ignorował tylko nowe pliki . Jeśli plik jest już śledzony przez git, to oczywiście git go nie zignoruje! Więc jakiekolwiek wzorce w jakimkolwiek pliku gitignorelub excludepliku nie mają zastosowania .
To ma sens. Dlaczego git miałby chcieć ignorować modyfikacje plików, które już śledzi? Jeśli plik ma zostać zignorowany, musisz najpierw powiedzieć gitowi, aby go nie śledził, a następnie git zignorować go, jak opisano w podręczniku. Aby uzyskać informacje na temat usuwania śledzenia plików, zobacz tę odpowiedź .
To wszystko prowadzi mnie do pytania, czy można zignorować zmiany w śledzonych plikach? Ponownie, git zapewnia. Ta odpowiedź; Git: Ignore tracked files daje nam polecenie (zamień filena plik, który chcesz zignorować):
git update-index --assume-unchanged file
Na koniec, oto dodatkowe informacje na temat debugowania git ignore.
Strona podręcznika gitignore (5) mówi nam:
Wzorce, które użytkownik chce, aby Git ignorował we wszystkich sytuacjach (np. Kopie zapasowe lub pliki tymczasowe generowane przez wybrany edytor użytkownika) zwykle trafiają do pliku określonego przez plik core.excludesfile w pliku ~ / .gitconfig użytkownika. Jego domyślna wartość to $ XDG_CONFIG_HOME / git / ignore. Jeśli $ XDG_CONFIG_HOME nie jest ustawione lub puste, zamiast tego używany jest $ HOME / .config / git / ignore.
Jest to więc nowe i zastępuje poprzednie ~/.gitignore_globalwspomniane wcześniej.
Następnie, i to jest naprawdę przydatne, jest to, że od 1.8.2 mamy teraz kilka doskonałych narzędzi do debugowania. Spójrz na:
Git uczy się ignorować lepiej - nowość w wersji 1.8.2
To pokazuje, jak użyć check-ignoreflagi new, aby sprawdzić, czy git pomyślnie ignoruje twoje wzorce, np
git check-ignore bin/a.dll --verbose