Mogę wymyślić co najmniej dwie sytuacje, w których chciałbyś mieć wiele .gitignore
plików w różnych (pod) katalogach.
Różne katalogi mają różne typy plików do zignorowania. Na przykład .gitignore
górny katalog projektu ignoruje wygenerowane programy, a Documentation/.gitignore
ignoruje wygenerowaną dokumentację.
Zignorować podane pliki tylko w danym (pod) katalogu (można użyć /sub/foo
w .gitignore
, choć).
Pamiętaj, że wzorce w .gitignore
pliku odnoszą się rekurencyjnie do katalogu (pod), w którym znajduje się plik i wszystkich jego podkatalogów, chyba że wzorzec zawiera „/” (więc np. Wzorzec name
stosuje się do każdego pliku wymienionego name
w danym katalogu i wszystkich jego podkatalogach, podczas gdy /name
do pliku o tej nazwie tylko w podanym katalogu).
Documentation/**/*.html
(zwróć uwagę, że dowolny ukośnik zakotwicza wzór;/foo
służy do zakotwiczenia pliku bezpośrednio w katalogu)Tytułem uwagi, jednym z przypadków, w których możliwość posiadania wielu
.gitignore
plików jest bardzo przydatna, jest to, że potrzebujesz dodatkowego katalogu w kopii roboczej, którego nigdy nie zamierzasz zatwierdzać. Wystarczy umieścić 1 bajt.gitignore
(zawierający tylko jedną gwiazdkę) w tym katalogu i nigdy się nie pojawi wgit status
itd.źródło
printf \* > .gitignore
(czyszczenie jest automatyczne po usunięciu katalogu). Jestem pewien, że są sytuacje, w których wybór.git/info/exclude
jest bardziej odpowiedni, ale nie wiele.Możesz mieć wiele
.gitignore
, każdy oczywiście w swoim własnym katalogu.Aby sprawdzić, które gitignore zasada jest odpowiedzialny za ignorowanie plików, należy użyć
git check-ignore
:git check-ignore -v -- afile
.I możesz mieć inną wersję
.gitignore
pliku dla każdej gałęzi: widziałem już taką konfigurację, która zapewnia, że jedna gałąź ignoruje plik, podczas gdy druga gałąź nie: patrz na przykład to pytanie .Jeśli twoje repozytorium obejmuje kilka niezależnych projektów, najlepiej byłoby je odnieść do podmodułów .
To byłyby najlepsze praktyki, pozwalające na klonowanie każdego z tych projektów niezależnie (wraz z ich odpowiednimi
.gitignore
plikami), przy jednoczesnym powołaniu się na konkretną wersję globalnego projektu nadrzędnego.Zobacz prawdziwą naturę submodułów, aby uzyskać więcej.
Zauważ, że od gita 1.8.2 (marzec 2013) możesz zrobić
git check-ignore -v -- yourfile
, aby zobaczyć, który program gitignore (z którego.gitignore
pliku) jest stosowany do 'yourfile
', i lepiej zrozumieć, dlaczego wspomniany plik jest ignorowany.Zobacz „ Która
gitignore
reguła ignoruje mój plik? ”źródło
Pro singiel
Łatwe do znalezienia.
Wyszukanie zasad wykluczenia może być dość trudne, jeśli mam wiele gitignore, na kilku poziomach w repozytorium.
W przypadku wielu plików zazwyczaj kończy się to dość powieleniem.
Pro wiele
Zakres wiedzy obejmuje część drzewa plików, w której jest potrzebna.
Ponieważ Git śledzi tylko pliki, pusty plik .gitignore jest jedynym sposobem na zatwierdzenie „pustego” katalogu.
(A przed Git 1.8 jedynym sposobem na wykluczenie takiego wzorca
my/**.example
było utworzenie gomy/.gitignore
z tym wzorcem**.foo
. Ten powód nie ma teraz zastosowania, jak możesz/my/**/*.example
.)Wolę pojedynczy plik, w którym mogę znaleźć wszystkie wyjątki. Nigdy nie brakowało mi pliku .svn dla katalogu i nie będę również tęsknił za katalogiem .gitignore.
To powiedziawszy, wiele gitignorów jest dość powszechnych. Jeśli ich użyjesz, przynajmniej bądź konsekwentny w ich użyciu, aby uzasadnić ich pracę. Na przykład możesz umieścić je w katalogach tylko jeden poziom od katalogu głównego.
źródło
empty
takiej nazwie ) jest częstsze.Istnieje wiele sytuacji, w których chcesz popełnić katalog do repo Git ale bez plików w tym, na przykład
logs
,cache
,uploads
katalogi itpDlatego zawsze robię, aby dodać
.gitignore
plik do tych katalogów o następującej treści:Dzięki temu
.gitignore
plikowi Git nie będzie śledził żadnych plików w tych katalogach, ale nadal pozwoli mi dodać.gitignore
plik, a zatem sam katalog do repozytorium.źródło