Czy powinieneś zaangażować .gitignore w repozytoriach Git?

496

Czy uważasz, że dobrą praktyką jest zlecenie .gitignore repozytorium Git?

Niektórym się to nie podoba, ale myślę, że to dobrze, ponieważ możesz śledzić historię pliku. Czyż nie

Howard
źródło
38
jeśli nie, włóż .gitignore do .gitignore ...
CharlesB
Możliwy duplikat Zignoruj ​​sam plik
.gitignore

Odpowiedzi:

488

Zwykle tak, .gitignoreprzydaje się wszystkim, którzy chcą pracować z repozytorium. Czasami będziesz chciał zignorować bardziej prywatne rzeczy (być może często tworzysz LOGlub coś takiego. W takich przypadkach prawdopodobnie nie chcesz narzucać tego nikomu.

Bruce Stephens
źródło
137
+1 „Prywatne rzeczy” mogą być wymienione odpowiednio w plikach $GIT_DIR/info/excludelub ~/.gitconfig.
WReach,
5
Jeśli plik jest już zalogowany i chcesz go zignorować, Git nie zignoruje pliku, jeśli dodasz regułę później. W takich przypadkach musisz najpierw wyśledzić plik, uruchamiając w swoim terminalu następującą komendę:git rm --cached FILENAME
eli-bd
133

Zwykle zrobić popełnić .gitignore. W rzeczywistości osobiście posuwam się do tego, aby upewnić się, że mój indeks jest zawsze czysty, gdy nad czymś nie pracuję. (nie git statuspowinien nic pokazywać).

Są przypadki, w których chcesz zignorować rzeczy, które tak naprawdę nie są specyficzne dla projektu. Na przykład twój edytor tekstowy może tworzyć automatyczne *~kopie zapasowe plików, lub innym przykładem mogą być .DS_Storepliki tworzone przez OS X.

Powiedziałbym, że jeśli inni narzekają na te zasady zaśmiecające twoje zasady .gitignore, pomiń je i umieść w globalnym pliku wykluczeń.

Domyślnie ten plik znajduje się w $XDG_CONFIG_HOME/git/ignore(domyślnie ~/.config/git/ignore), ale tę lokalizację można zmienić, ustawiając core.excludesfileopcję. Na przykład:

git config --global core.excludesfile ~/.gitignore

Po prostu stwórz i edytuj globalny plik wykluczeń do treści twojego serca; będzie miało zastosowanie do każdego repozytorium git, na którym pracujesz na tym komputerze.

Stéphan Kochen
źródło
14
Zawsze możesz dodać # some commentwiersze do .gitignorepliku, aby wyjaśnić, dlaczego coś ignorujesz. Komentując każdy wiersz jest trochę przesady, ale muszę mieć sekcje oznaczone # IDE (Eclipse), # OS (Mac OS X)oraz # Generated (Perl). W ten sposób, jeśli ktoś chce użyć innego systemu operacyjnego lub IDE, może dodać sekcję i wszyscy możemy się dzielić.
Stuart R. Jefferys
9
kciuki za „Ja osobiście iść tak daleko, jak upewniając mój indeks jest zawsze czyste, kiedy nie pracuję nad czymś (git status powinien pokazać niczego.).”
SGhosh
4
Uwaga z nowoczesnym Git domyślną wartością core.excludesfilejest ~/.config/git/ignore, zgodny ze specyfikacją katalogu podstawowego XDG
Jakub Narębski
1
+1 dla globalnych .gitignore- niezwykle korzystne, gdy ludzie, z którymi współpracujesz, nie zgadzają się co do zawartości wypychanych .gitignoreplików lub tego, czy powinny być wypychane, a my wszyscy używamy ton różnych środowisk deweloperskich, które generują różne rodzaje hałasu.
Krease
1
davidwalsh.name/global-gitignore więcej informacji na temat globalnego ignorowania
Frode Akselsen
11

Umieszczam zatwierdzenie .gitignore, które jest uprzejmością dla innych, którzy mogą zbudować mój projekt, że następujące pliki są uzyskiwane i należy je zignorować.

Zazwyczaj robię hybrydę. Chciałbym, aby makefile wygenerował plik .gitignore, ponieważ makefile będzie znał wszystkie pliki powiązane z projektem - lub inne. Następnie miej do sprawdzenia projekt najwyższego poziomu .gitignore, który zignoruje wygenerowane pliki .gitignore utworzone przez plik makefile dla różnych podkatalogów.

W moim projekcie mógłbym mieć podkatalog bin z wszystkimi wbudowanymi plikami wykonywalnymi. Następnie sprawię, że mój plik makefile wygeneruje plik .gitignore dla tego katalogu bin. I w górnym katalogu .gitignore, który zawiera bin / .gitignore. Najwyższy to ten, w którym się melduję.

Bitdiot
źródło
0

Zatwierdzenie .gitignore może być bardzo przydatne, ale chcesz mieć pewność, że nie będziesz go zbyt długo modyfikować, szczególnie jeśli regularnie przełączasz się między gałęziami. Jeśli to zrobisz, możesz dostać przypadki, w których pliki są ignorowane w gałęzi, a nie w drugiej, zmuszając cię do ręcznego usunięcia lub zmiany nazwy plików w katalogu roboczym, ponieważ pobranie nie powiodło się, ponieważ spowoduje to zastąpienie pliku nieśledzonego.

Dlatego tak, dokonaj zatwierdzenia swojego .gitignore, ale nie wcześniej, niż masz wystarczającą pewność, że nie zmieni się on tak bardzo później.

użytkownik3464496
źródło
-6

Dobrą praktyką jest .gitignore przynajmniej tworzenie produktów (programy, * .o itp.).

Jakub Narębski
źródło
11
To nie odpowiedziało na pytanie: czy .gitignore samo powinno być „ .gitignored”?
Charles Wood
6
Należy zwrócić uwagę, że nie było pytanie, a to robi odpowiedź co pytano: „Jest [ona] praktyka dobry popełnić .gitignore w repo Git?”.
papercowboy
5
@ cayuu wierzę, że odpowiedź brzmi: „dobrą praktyką jest .gitignore” xyz, nie widzę, jak odpowiada na pytanie. pytanie brzmi, czy .gitignore powinien być kontrolowany pod kątem wersji, czy nie.
nocograf