Могу ли я включить другой файл.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, и он чрезвычайно прост в использовании.

Это не позволяет никому включать под-шаблоны, но генерирует один большой шаблон из отдельных шаблонов 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.

Тогда либо

  1. выполнятьnpx -p @slidewave/gitignore-include giismudge .gitignoreсобрать все воедино,
  2. подключите git-хуки, чтобы смазать файлы игнорирования при фиксации, или
  3. настроить.gitattributeдрайвер фильтра, как указано в ответе VonC , но с использованиемgiismudgeделать работу.

Предупреждение: любой, включая вас, кому нужно повторно смазать файлы игнорирования, должен иметь те же исходные файлы по тем же путям, чтобы это работало. Поэтому я рекомендую поместить ваши исходные файлы gitignore в общедоступный репозиторий и использовать для них необработанные URL-адреса, аналогичные тем, что я показал для директив включения macOS и VSCode.

Обратите внимание, что я являюсь автором инструмента, поэтому я немного предвзят и отвечаю в качестве рекламы инструмента. :)

Другие вопросы по тегам