gitignore: игнорировать все, кроме определенного типа файла в подпапке - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть файл .gitignore, который, кажется, не работает должным образом. Он не загружает никаких файлов в подкаталог, как предполагалось, но я добавил все файлы, кроме .cs, но подкаталог остается пустым. Вот мой код:

/*

!.gitignore

!my_repo/build/game/Assets/Scripts/*.cs

Мне ничего не нужно, кроме файлов .cs и файла .gitignore. но файлы .cs по-прежнему не воспринимаются git. Спасибо.

PS.

Я тоже пытался это сделать, но это тоже не работает:

!*.cs

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Линия !my_repo/build/game/Assets/Scripts/*.cs содержит корневую папку, в то время как он не должен и !*.cs выглядит только в корневой папке.

Должно быть как /* !.gitignore !**/*.cs

Затем добавьте с помощью git add -f *

0 голосов
/ 01 ноября 2018

Вам также необходимо включить каталог. См. https://git -scm.com / docs / gitignore # _examples

# Ignore all (assumes ignore is in my_repo/build/.gitignore)
/*
!.gitignore    

# Exempt directories
# Also ignore all files except the sub directories in the path
!game/
game/*
!game/Assets
game/Assets/*
!game/Assets/Scripts
game/Assets/Scripts/*

# Except your CS files
!game/Assets/Scripts/*.cs

- Обновление, чтобы добавить ясности -

Это кажется нелогичным, но вы должны сначала включить каталог, потому что:

Невозможно повторно включить файл, если родительский каталог этого файла исключен. Git не перечисляет исключенные каталоги по соображениям производительности, поэтому любые шаблоны в содержащихся файлах не влияют, независимо от того, где они определены.

Таким образом, вы должны включить каталог, затем игнорировать все в каталоге по умолчанию, а затем создать свое исключение.

...