Как создать файл gitignore linux

Настройка глобального файла .gitignore

Как вычистить мусор из файла .gitignore

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

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

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

Как создать глобальный .gitignore

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

Затем откройте его в любом текстовом редакторе и добавьте все файлы и папки, которые вы всегда хотите игнорировать. Вот как выглядит моя глобальная конфигурация:

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

Я использую платформу IntelliJ IDEA, поэтому мне нужно игнорировать папки .idea создаваемую тем же редактором кода PHPStorm. Если бы я был пользователем Mac, мне нужно было бы игнорировать, например, файлы .DS_Store, создаваемые macOS. А если бы я был пользователем Windows с Visual Studio Code в качестве основного редактора, мой .gitignore файл, вероятно, выглядел бы так:

Наконец, настройте git для использования нашего вновь созданного файла

Если вы пользователь Windows, вам нужно будет отформатировать путь по-другому.

Вот и все, больше никаких надоедливых настроек редактора в ваших коммитах!

Веб-разработчик со стажем программирования более 9 лет, всегда в процессе учебы и созидания.

Источник

Игнорирование файлов и каталогов в Git (.gitignore)

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

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

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

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

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

Шаблон .gitignore

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

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

Комментарии

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

Читайте также:  Проверка систем компьютера windows 10

Рассечение

Символ косой черты (/) представляет разделитель каталогов. Косая черта в начале шаблона относится к каталогу, в котором находится .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 используется для того, чтобы определить, какие файлы и папки не нужно добавлять в git репозиторий.

Мы конечно могли бы вручную добавлять нужные файлы в репозиторий, например так:

Однако это было бы очень трудоемко. Гораздо проще использовать команду:

Которая добавит все файлы в каталоге проекта.

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

Тут нам и нужен .gitignore. Вам нужно его самим создать и разместить в корне проекта либо нужной подпапке.

Где должен находиться этот файл

Файл может находиться в корне проекта или любом подкаталоге.

Либо можно задать глобальный файл gitignore, таким образом:

Таким образом вы сможете записать в глобальный файл

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

Примеры содержимого .gitignore файла

Подробнее о шаблонах игнорирования

Шаблон Примеры соответствия Пояснение*
**/logs logs/debug.log logs/monday/foo.bar build/logs/debug.log Добавьте в начало шаблона две звездочки, чтобы сопоставлять каталоги в любом месте репозитория.
**/logs/debug.log logs/debug.log build/logs/debug.log но не logs/build/debug.log Две звездочки можно также использовать для сопоставления файлов на основе их имени и имени родительского каталога.
*.log debug.log foo.log .log logs/debug.log Одна звездочка — это подстановочный знак, который может соответствовать как нескольким символам, так и ни одному.
*.log !important.log debug.log trace.log но не important.log logs/important.log Добавление восклицательного знака в начало шаблона отменяет действие шаблона. Если файл соответствует некоему шаблону, но при этом также соответствует отменяющему шаблону, указанному после, такой файл не будет игнорироваться.
.log !important/.log trace.* debug.log important/trace.log но не important/debug.log Шаблоны, указанные после отменяющего шаблона, снова будут помечать файлы как игнорируемые, даже если ранее игнорирование этих файлов было отменено.
/debug.log debug.log но не logs/debug.log Косая черта перед именем файла соответствует файлу в корневом каталоге репозитория.
debug.log debug.log logs/debug.log По умолчанию шаблоны соответствуют файлам, находящимся в любом каталоге
debug?.log debug0.log debugg.log но не debug10.log Знак вопроса соответствует строго одному символу.
debug6.log debug0.log debug1.log но не debug10.log Квадратные скобки можно также использовать для указания соответствия одному символу из заданного диапазона.
debug[01].log debug0.log debug1.log но не debug2.log debug01.log Квадратные скобки соответствуют одному символу из указанного набора.
debug[!01].log debug2.log но не debug0.log debug1.log debug01.log Восклицательный знак можно использовать для указания соответствия любому символу, кроме символов из указанного набора.
debug[a-z].log debuga.log debugb.log но не debug1.log Диапазоны могут быть цифровыми или буквенными.
logs logs logs/debug.log logs/latest/foo.bar build/logs build/logs/debug.log Без косой черты в конце этот шаблон будет соответствовать и файлам, и содержимому каталогов с таким именем. В примере соответствия слева игнорируются и каталоги, и файлы с именем logs
logs/ logs/debug.log logs/latest/foo.bar build/logs/foo.bar build/logs/latest/debug.log Косая черта в конце шаблона означает каталог. Все содержимое любого каталога репозитория, соответствующего этому имени (включая все его файлы и подкаталоги), будет игнорироваться
logs/ !logs/important.log logs/debug.log logs/important.log Минуточку! Разве файл logs/important.log из примера слева не должен быть исключен нз списка игнорируемых? Нет! Из-за странностей Git, связанных с производительностью, вы не можете отменить игнорирование файла, которое задано шаблоном соответствия каталогу
logs/**/debug.log logs/debug.log logs/monday/debug.log logs/monday/pm/debug.log Две звездочки соответствуют множеству каталогов или ни одному.
logs/*day/debug.log logs/monday/debug.log logs/tuesday/debug.log but not logs/latest/debug.log Подстановочные символы можно использовать и в именах каталогов.
logs/debug.log logs/debug.log но не debug.log build/logs/debug.log Шаблоны, указывающие на файл в определенном каталоге, задаются относительно корневого каталога репозитория. (При желании можно добавить в начало косую черту, но она ни на что особо не повлияет.)

Что если файлы из gitignore уже добавлены в репозиторий

Обратите внимание, что если файлы уже добавлены в git репозиторий, то добавление их в .gitignore не удалит эти файлы. Изменения в них будут продолжать отслеживаться и входить в коммиты, несмотря на то, что они есть в .gitignore .

Нам придется вручную их удалить из репозитория.

Очень удобная команда bash, которая удалит из git репозитория те файлы, которые содержатся в файлах .gitignore :

То же самое для Powershell

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

Либо можно удалять файлы вручную, таким образом:

Либо если нам нужно удалить целую директорию из git, то воспользуемся следующей командой:

Либо так мы могли бы удалить все файлы с расширением .log в папке log:

Параметр —cached означает, что файлы будут удалены только из раздела «проиндексированных файлов». На диске (рабочем каталоге) они останутся нетронутыми.

Как понять, почему игнорируется конкретный файл

Запустите команду вместо path/to/file следует указать путь к файлу.

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

Отобразить все игнорируемые файлы:

Очистить проект от всех игнорируемых файлов:

Используйте с осторожностью. Убедитесь что у вас есть резервная копия.

Источник

Читайте также:  Includepath vs code c linux
Оцените статью