Как отследить файл, вложенный в неотслеживаемую папку? - PullRequest
0 голосов
/ 10 апреля 2019

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

Вот пример нашего .gitignore:

*
!/example.txt
!/example2.txt

Iсейчас пытаюсь добавить файл в git, который существует в игнорируемой папке a, путь к файлу: /a/b/c/file.txt.У меня вопрос: как я могу не игнорировать этот файл, а игнорировать все остальное в папке / a?

Пока я обнаружил, что добавление этого в .gitignore работает:

!/a/
!/a/b/
!/a/b/c/
!/a/b/c/file.txt

Однако, это просто кажется немного грязным.Первоначально я думал, что смогу сойти с рук, имея только !/a/b/c/file.txt в .gitignore, но по какой-то причине это не работает?

Также для справки, мне нужнозапустите git rm --cached -r . и git add ., чтобы изменения вступили в силу .gitignore.

Любая помощь будет принята с благодарностью - спасибо!

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Я думаю, вам нужно добавить !*/. Это белые списки каталогов. Вот образец игнорируй ..

# ignore everything
*
# don't ignore directories
!*/
# whitelist files with extension
*.xyz

# blacklist individual file
a/b/c.xyz

Другие варианты - занести в черный список все в каталоге и внести в белый список один файл

a/b/c/*
!a/b/c/file.txt
0 голосов
/ 10 апреля 2019

git add --force может использоваться для добавления игнорируемых файлов:

git add -f a/b/c/file.txt

После добавления файл отслеживается и больше не игнорируется.

...