Chcę zignorować wszystkie reguły .gitignore w podkatalogu z wyjątkiem reguł .gitignore w katalogu głównym.
na przykład) Mam już .gitignore
plik w strukturze katalogów /a
.
A także .gitignore
plik w formacie /a/b
. Załóżmy, że /a
masz a.txt
b.txt
pliki.
/a/b
ma .config
plik. .gitignore
definiuje .config
w /a/b
.
.config
plik zostanie zignorowany przez .gitignore
in /a/b
.
Ale naprawdę chcę śledzić .config
plik, ignorując reguły .gitignore
w podkatalogu.
Czy to możliwe?
Z góry dziękuję
/a/b/c
i zaktualizować.gitignore
w/a/b
, jest to możliwe w/a/b/c
ignorować przepisy,/a/b
a zamiast używać tylko z zasady/a
."An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again."
inner .gitignore
wola łączy sięouter .gitignore
z wyższym priorytetem, a nie po prostu zastępuje.Powiedzmy, że chcesz dołączyć do
node_modules
repozytorium, ale jakiś moduł w dalszej linii ma.gitignore
swój własny. Możesz zanegować reguły, dodając następujące elementy do.gitignore
pliku głównego :źródło
node_modules/mod1
,node_modules/mod2
w obu są .gitignore, które ignorują głębszenode_modules
w nich (tak jak wnode_modules/mod1/node_modules
. Często dodaję i usuwam moduły, więc nie mogę dobrze znać i ręcznie dodawać reguł, aby ignorowaćnode_modules/mod1/.gitignore
lub ręcznie dodawać przez!node_modules/mod1/node_modules
cały czas. Zasadniczo próbuję wdrożyć aplikację meteor, a wszystkie elementy osadzone.gitignores
uniemożliwiają uzyskanie tego wszystkiego w git.Kluczem do tego problemu jest wykluczenie katalogu nadrzędnego. Od
$ man gitignore
:Oto jak to działa. Dany:
/.gitignore
:Następnie
/b/foo
pojawi się jako dołączone pliki, podczas gdy wszystko w/a
i/c
zostanie wykluczone. Wadą jest to, że musisz dodać negację dla wszystkich elementów nadrzędnych dowolnego katalogu, w którym chcesz dołączyć pliki.źródło
!/b/**/*
?O ile wiem, nie da się tego zrobić. Ponieważ lokalny plik .gitignore nadpisze główny plik ginignore. Moje obejście polega na ręcznym dodaniu.
źródło
.gitignore
nie działało dla mnie, ponieważ rodzic zastępuje ustawienia folderu podrzędnego. Jeśli wymusisz dodanie za pomocągit add -f myfile.txt
, rozpocznie śledzenie zmian z pominięciem.gitignore
ustawień rodzica .