Могу ли я включить другой файл.gitignore в файл.gitignore? (например, #include в c-подобных языках)
У меня есть несколько файлов, таких как vim.gitignore
, SVN.gitignore
а также CVS.gitignore
(распространяюсь по моему жесткому диску).
Могу ли я просто включить эти файлы gitignore в .gitignore
файл в новом проекте Git?
Редактировать: у меня уже есть глобальный файл игнорирования.
Я просто хочу игнорировать разные файлы в разных типах проектов, это возможно?
4 ответа
Вы могли бы:
- Сделайте шаблон репо с:
- эти файлы xxx.gitignore в нем:
- файл.gitignore с "
xxx-gitignore-xxx
"в нем (другими словами, с содержанием вы можете легко идентифицировать .gitattribute
драйвер фильтра
(для каждого нового репо вы клонируете его и можете начинать с тех файлов, которые уже есть.
Затем вы удаляете удаленный источник или заменяете его любым удаленным репо, к которому хотите подключиться.
При любом оформлении вашего репо драйвер фильтра будет через скрипт smudge:
- признать содержание
.gitignore
файл - проверьте, если
xxx.gitignore
контента там еще нет (ища конкретную строку, которая есть только у тех файлов) - если их контента нет, он добавит контент тех
xxx.gitignore
файлы - если контент уже обновлен, он не изменит
.gitignore
,
Обратите внимание, что ключевым моментом здесь является наличие идентифицируемого содержимого, поскольку сценарий драйвера фильтра не имеет имени / пути к файлу, который он фильтрует.
Это немного запутанно, но, кажется, единственный способ реализовать желаемую функцию "включения".
Закрытие, которое вы получите, является глобальным файлом игнорирования:
git config --global core.excludesfile ~/.gitignore
что, конечно, как иметь .gitignore
в репо, но применимо ко всем репо в вашей системе (и не распространяется на внешние клоны.)
Я запускаю проект, в котором размещено наибольшее количество шаблонов gitignore, и он чрезвычайно прост в использовании.
- Вы можете использовать Интернет для создания шаблона на https://gitignore.io/
Вы можете установить gitignore через командную строку, чтобы набрать
gi cvs,vim,svn
Вы также можете обновить существующие шаблоны, используя этот URL: https://www.gitignore.io/?templates=cvs,vim,svn
И, наконец, вы можете внести свой вклад в список шаблонов, который объединяет @github/gitignore и более 100 других шаблонов сообщества для создания крупнейшего хранилища шаблонов по адресу: https://github.com/dvcs/gitignore
Это не позволяет никому включать под-шаблоны, но генерирует один большой шаблон из отдельных шаблонов git.
Вы также можете использовать пакет @slidewave/gitignore-include NPM для выполнения этой задачи.
Пример:
## <include href="path/to/vim.gitignore">
## </include>
## <include href="path/to/SVN.gitignore">
## </include>
## <include href="path/to/CVS.gitignore">
## </include>
## <include href="https://github.com/github/gitignore/raw/main/Global/macOS.gitignore">
## </include>
## <include href="https://github.com/github/gitignore/raw/main/Global/VisualStudioCode.gitignore">
## </include>
# Any local overrides go here.
Тогда либо
- выполнять
npx -p @slidewave/gitignore-include giismudge .gitignore
собрать все воедино, - подключите git-хуки, чтобы смазать файлы игнорирования при фиксации, или
- настроить
.gitattribute
драйвер фильтра, как указано в ответе VonC , но с использованиемgiismudge
делать работу.
Предупреждение: любой, включая вас, кому нужно повторно смазать файлы игнорирования, должен иметь те же исходные файлы по тем же путям, чтобы это работало. Поэтому я рекомендую поместить ваши исходные файлы gitignore в общедоступный репозиторий и использовать для них необработанные URL-адреса, аналогичные тем, что я показал для директив включения macOS и VSCode.
Обратите внимание, что я являюсь автором инструмента, поэтому я немного предвзят и отвечаю в качестве рекламы инструмента. :)