/ / czy można zignorować reguły .gitignore w podkatalogu? - git

czy można zignorować reguły .gitignore w podkatalogu? - git

Chcę zignorować wszystkie reguły .gitignore w podkatalogu, z wyjątkiem reguł .gitignore w katalogu głównym.

na przykład) Już mam .gitignore plik w strukturze katalogów /a.

I też mam .gitignore plik w /a/b. Założyć /a mieć a.txt b.txt akta.

/a/b ma .config plik. .gitignore definiuje .config w /a/b.

.config plik zostanie zignorowany przez .gitignore w /a/b.

Ale naprawdę chcę śledzić .config plik, ignorując reguły .gitignore w podkatalogu.

Czy to możliwe?

Z góry dziękuję

Odpowiedzi:

85 dla odpowiedzi nr 1

Twoje pytanie nie jest zbyt jasne, ale jeśli istnieją podkatalogi, w których chcesz mieć inne reguły gitignore, możesz po prostu utworzyć nowy .gitignore w tym katalogu.

Powiedz, że masz:

projekt / .gitignore project / stuff / .gitignore

.Gitignore w rzeczy / zastąpi .gitignore w katalogu głównym.

git help gitignore lub man gitignore ma nieco więcej informacji o tym, co jest możliwe.


26 dla odpowiedzi nr 2

Powiedzmy, że chcesz dołączyć node_modules w twoim repozytorium, ale niektóre moduły w dolnej linii mają .gitignore własny. Możesz negować reguły, dodając następujące elementy do swojego katalogu głównego .gitignore plik:

# Make sure to include everything in node_modules.
!node_modules/**

6 dla odpowiedzi nr 3

O ile wiem, nie ma na to sposobu. Ponieważ lokalny plik .gitignore nadpisze root ginignore Moje obejście polega na dodawaniu ręcznym.

git add --force [ your file and folder]

5 dla odpowiedzi № 4

Kluczem do rozwiązania tego problemu jest wykluczenie katalogu nadrzędnego. Z $ man gitignore:

Ponowne dołączenie pliku nie jest możliwe, jeślikatalog nadrzędny tego pliku jest wykluczony. Git nie wyświetla wykluczonych katalogów ze względu na wydajność, więc wszelkie wzorce w zawartych plikach nie mają wpływu, bez względu na to, gdzie są zdefiniowane.

Oto jak udało mi się go uruchomić. Dany:

/a/...
/b/foo
/c/...

/.gitignore:

/*
!/b

Następnie /b/foo pojawi się jako dołączone pliki, podczas gdy wszystko w /a i /c zostaną wykluczone. Kompromis polega na tym, że musisz dodać negację dla wszystkich rodziców dowolnego katalogu, w którym chcesz dołączyć pliki.