Меню Рубрики

Как создать gitignore linux

5 мин для чтения Игнорирование файлов и каталогов в Git (.gitignore)

Главное меню » Статьи » Игнорирование файлов и каталогов в Git (.gitignore)

Файл .gitignore определяет, какие файлы неотслеживаемого Git следует игнорировать.

Какие файлы следует игнорировать?

Игнорируемые файлы – это, как правило, специфичные для платформы файлы или автоматически созданные файлы из систем сборки. Некоторые общие примеры включают в себя:

  • Файлы времени выполнения, такие как журнал, блокировка, кэш или временные файлы.
  • Файлы с конфиденциальной информацией, такой как пароли или ключи API.
  • Скомпилированный код, такой как .class или .o.
  • Каталоги зависимостей, такие как /vendor или /node_modules.
  • Создавать папки, такие как /public, /out или /dist.
  • Системные файлы, такие как .DS_Store или Thumbs.db
  • Конфигурационные файлы IDE или текстового редактора.

Шаблон .gitignore

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

.gitignore использует шаблоны с подстановкой для сопоставления имен файлов с подстановочными знаками. Если у вас есть файлы или каталоги, содержащие шаблон подстановки, вы можете использовать одну обратную косую черту (\) для экранирования символа.

Комментарии

Строки, начинающиеся с хэш-метки (#), являются комментариями и игнорируются. Пустые строки можно использовать для улучшения читаемости файла и группировки связанных строк шаблонов.

Рассечение

Символ косой черты (/) представляет разделитель каталогов. Косая черта в начале шаблона относится к каталогу, в котором находится .gitignore.

Если шаблон начинается с косой черты, он сопоставляет файлы и каталоги только в корне хранилища.

Если шаблон не начинается с косой черты, он сопоставляет файлы и каталоги в любом каталоге или подкаталоге.

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

Литеральные имена файлов

Самый простой шаблон – это буквальное имя файла без каких-либо специальных символов.

Шаблон Пример совпадений
/access.log access.log
access.log access.log
logs/access.log
var/logs/access.log
build/ build

Символы подстановки

* – Символ звездочки соответствует нулю или более символов.

Шаблон Пример совпадений
*.log error.log
logs/debug.log
build/logs/error.log

**- Два соседних символа звездочки соответствуют любому файлу или нуля или более каталогов. Когда за ним следует косая черта ( /), он соответствует только каталогам.

Шаблон Пример совпадений
logs/** Совпадает с чем угодно внутри каталога logs.
**/build var/build
pub/build
build
foo/**/bar foo/bar
foo/a/bar
foo/a/b/c/bar

? – Знак вопроса соответствует любому отдельному символу.

Шаблон Пример совпадений
access?.log access0.log
access1.log
accessA.log
foo?? fooab
foo23
foo0s

Квадратные скобки

Если первый символ, следующий за символом [восклицательного знака ( !), соответствует шаблону любому символу, кроме символов из указанного набора.

Шаблон Пример совпадений
*.[oa] file.o
file.a
*.[!oa] file.s
file.1
file.0
access.1.log access.0.log
access.1.log
access.2.log
file.[a-c].out file.a.out
file.b.out
file.c.out
file.[a-cx-z].out file.a.out
file.b.out
file.c.out
file.x.out
file.y.out
file.z.out
access.[!0-2].log access.3.log
access.4.log
access.Q.log

Отрицательные образцы

Шаблон, который начинается с восклицательного знака (!), отменяет (повторно включает) любой файл, который игнорируется предыдущим шаблоном. Исключением из этого правила является повторное включение файла, если исключен его родительский каталог.

Шаблон Пример совпадений
*.log
!error.log
error.log или logs/error.log не будет проигнорирован

Пример .gitignore

Ниже приведен пример того, как ваш файл .gitignore может выглядеть:

Локальный .gitignore

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

Шаблоны, определенные в файлах, которые находятся в каталогах (подкаталогах) более низкого уровня, имеют приоритет над шаблонами в каталогах более высокого уровня.

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

Правила личного игнорирования

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

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

Глобальный .gitignore

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

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

Например, чтобы установить

/.gitignore_global в качестве глобального файла игнорирования Git, вы должны сделать следующее:

  1. Создайте файл:
  2. Добавьте файл в конфигурацию Git:
  3. Откройте файл в текстовом редакторе и добавьте в него свои правила.

Глобальные правила особенно полезны для игнорирования определенных файлов, которые вы никогда не хотите зафиксировать, таких как файлы с конфиденциальной информацией или скомпилированные исполняемые файлы.

Игнорирование ранее зафиксированных файлов

Файлы в вашей рабочей копии могут быть отслежены или не отслежены.

Чтобы игнорировать файл, который был ранее зафиксирован, вам нужно удалить его из индекса и удалить его из индекса, а затем добавить правило для файла в .gitignore:

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

Чтобы рекурсивно удалить каталог, используйте параметр -r:

Если вы хотите удалить файл как из индекса, так и из локальной файловой системы, опустите опцию –cached.

При рекурсивном удалении файлов используйте опцию -n, которая выполнит «пробный запуск» и покажет вам, какие файлы будут удалены:

Файл отладки .gitignore

Иногда бывает сложно определить, почему конкретный файл игнорируется, особенно когда вы используете несколько файлов .gitignore или сложные шаблоны. Вот тут-то и пригодится команда git check-ignore с опцией -v, которая говорит git отображать подробности о соответствующем шаблоне.

Например, чтобы проверить, почему файл www/yarn.lock игнорируется, вы должны выполнить:

Выходные данные показывают путь к файлу gitignore, номер совпадающей строки и фактический шаблон.

Команда также принимает более одного имени файла в качестве аргументов, и файл не обязательно должен существовать в вашем рабочем дереве.

Отображение всех игнорируемых файлов

Команда git statusс параметром –ignored отображает список всех игнорируемых файлов:

Заключение

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

gitignore.io – это онлайн-сервис, позволяющий создавать файлы .gitignore для вашей операционной системы, языка программирования или IDE.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Правильное добавление .gitignore

Работал над проектом. В один момент перестал работать .gitignore (лишние файлы в репозиторий запушились). Удалил,создал новый. Как правильно его залить на репозиторий, с другими файлами или без? Потому что я уже попробовал кучу способов и все равно лишние файлы остаются. Сам файл .gitignore взял у знакомого, у него все работает (такая же ОС, вижуалка и тоже плюсы).

3 ответа 3

если файл уже отслеживается в текущей ветке, то добавление/удаление его имени (или шаблона, под который подпадает его имя) в/из файла .gitignore никак не повлияет на поведение команды git commit -a :

те изменения, которые вы внесли в этот отслеживаемый файл, будут добавлены в индекс и затем в коммит.

чтобы программа git перестала отслеживать изменения в файле, этот файл надо удалить из хранилища:

и закоммитить это изменение.

Как правильно его залить на репозиторий, с другими файлами или без?

собственно, файл .gitignore можно даже и не «заливать» в удалённое хранилище. «заливается» он исключительно для удобства других пользователей хранилища: чтобы у всех были идентичные настройки игнорируемых файлов/каталогов.

содержимое же файла .gitignore имеет «непосредственное» действие. пример:

этот файл отображается в выводе команды git status как неотслеживаемый:

если мы добавим его имя в файл .gitignore :

то команда git status уже не будет отображать это файл как неотслеживаемый (т.е., программа git будет игнорировать любые изменения в этом файле):

Источник


Adblock
detector