#git #github #github-for-mac
#git #github #github-для-mac
Вопрос:
Наша текущая настройка git работает на основе белого списка, поэтому по умолчанию все игнорируется, и затем мы включаем каталоги по мере необходимости. Это отлично работало для нового репозитория, но теперь начинает вызывать проблемы, когда у нас есть куча отслеживаемых / неотслеживаемых файлов.
Вот пример нашего .gitignore:
*
!/example.txt
!/example2.txt
Сейчас я пытаюсь добавить в 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 вступить в силу.
Любая помощь будет высоко оценена — спасибо!
Ответ №1:
Я думаю, вам нужно добавить !*/
. Это белый список каталогов. Вот пример игнорирования..
# 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
Комментарии:
1.
!*/
Правило будет работать, но оно также снижает скорость взлома, которая увеличивает игнорирование каталога. Это вполне может стоить компромисса:.gitignore
я полагаю, решать тому, кто пишет.
Ответ №2:
git add --force
может использоваться для добавления игнорируемых файлов:
git add -f a/b/c/file.txt
После добавления файл отслеживается и больше не игнорируется.
Комментарии:
1. Похоже, это может сработать, но нам нравится иметь возможность использовать .gitignore в качестве источника того, что должно / не должно быть в репозитории.