Как сделать исключение в .gitignore?

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

Отрицательные шаблоны в .gitignore позволяют исключить файлы или директории из игнорирования, даже если они совпадают с шаблонами, указанными ранее.

Для создания отрицательного шаблона в .gitignore следуйте следующим правилам:

1. Добавьте ! в начало шаблона для создания отрицательного шаблона. Например, вот шаблон для игнорирования всех файлов .txt, кроме файла example.txt:

   *.txt
   !example.txt

Этот шаблон обозначает, что все файлы с расширением .txt будут игнорироваться, за исключением файла example.txt.

2. Отрицательные шаблоны не могут разрешить ранее игнорируемый файл или директорию. Поэтому, если файл или директория уже были исключены по шаблону, использование отрицательного шаблона не приведет к тому, что они будут добавлены в отслеживаемые файлы. Например, если в .gitignore уже указан шаблон для исключения всех файлов в директории docs/, то отрицательный шаблон для файла docs/example.txt не переопределит это исключение.

3. При использовании отрицательных шаблонов, убедитесь, что исключаемые файлы или директории находятся в той же директории, где находится файл .gitignore. Если файл или директория для исключения находится в поддиректории, то вам нужно будет использовать относительный путь.

4. Отрицательные шаблоны могут быть использованы не только в .gitignore, но и во всех других файлах, где используется синтаксис шаблонов Git, таких как .git/info/exclude и .gitattributes.

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