Как проигнорировать файлы в git
Перейти к содержимому

Как проигнорировать файлы в git

  • автор:

Игнорирование файлов в Git — Файл gitignore

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

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

Какие файлы нужно исключить?

  • Файлы редакторов IDE
  • Выполняемые файлы — log, lock, cache или непостоянные файлы (tmp).
  • Файлы системы, для Mac — .DS_Store, для Windows — Thumbs.db
  • Директории зависимостей — vendor / node_modules.
  • Build директории — public / dist.
  • Файлы с секретной информацией, такие как пароли или ключи API.

Правила синтаксиса файла .gitignore

Синтаксис gitignore применяют glob формат с целью выбора файлов.

  • 1 строчка — один принцип,
  • Пустые строки пропускаются,
  • (#) — означает комментарии, создавать следует в начале строки
  • (/) — в начале строки указывает, что принцип используется только лишь в файлах и папках, которые находятся в том же каталоге, как и файл .gitignore,
  • (*) указывает на любое число знаков(ноль или больше),
  • (?) заменяет от нуля до единого знака. Можно указывать в различном месте,
  • (**) применяют с целью указания каждого числа поддиректорий,
  • (!) в начале строчки значит инвертирование правила, обязан для указания исключений из правил игнорирования,
  • (\) — применяют с целью экранирования спецсимволов, например, чтобы игнорировать файл с именем «!file!.txt», нужно написать такое правило: «\!file!.txt»,
  • Для исключения всего каталога, правило обязано заканчиваться на (/), в другом случае правило считается именованием файла.

Пример .gitignore файла

Пример был взят из нашего личного проекта
# Node artifact files
node_modules/
dist/
# Compiled Java class files
*.class
# Log files
*.log
# Package files
*.jar
# Maven
target/
dist/
# IDE
.idea/
.vscode/
# Unit test reports
TEST*.xml
# Generated by MacOS
.DS_Store
# Generated by Windows
Thumbs.db
# Applications
*.app
*.exe
*.war
# Large media files
*.mp4
*.tiff
*.avi
*.flv
*.mov
*.wmv

Комментарии

# — считается объяснением и игнорирует строки. Пустые строки применяют для лучшей читабельности кода.

Рассечение

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

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

Легкий способ добавить файл в исключение — это прописать полный путь. assets/idea.log

Знаки подстановки

* – Равно нулю или более символов.
**- Объединенные звёздочки подходят любому файлу, нуля или больше каталогов. Когда за ним стоит слеш ( /), он соответствует только каталогам.
? – Относится к любому единичному знаку.
app/** = Совпадает с любым файлом внутри каталога app.

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

[. ] – подходит каждому знаку, находящихся в квадратные скобки. Если два символа связаны через дефис, то это указан диапазон символов. Диапазон содержит в себе все без исключения знаки, которые находятся между этими двумя символами. Диапазон можно задать в буквенном или числовом формате.

В случае если первый знак после [ является восклицательным знаком (!), то образец подходит любому знаков, кроме знаков из указанного набора.
*.[ae] = filename.e, filename.a
*.[!ae] = filename.x, filename.3, filename.s

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

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

Как исключить файлы, которые уже отслеживаются?

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

Сначала выполните всевозможные неполные изменения кода, а уже потом используйте команду (команда для всех файлов). Чтобы отменить отслеживание одного файла, воспользуйтесь командой (git rm -r —cached filename) git rm -r —cached . Таким образом мы удалили файл из индекса, но не удалили его из рабочего дерева.

Эта команда убирает все модифицированные файлы из индекса. Затем пропишите новую инициализацию файлов
git add .

Осталось добавить коммит
git commit -m “gitignore is working”

Личные правила игнорирования

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

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

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

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

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

Для того чтобы определить ~/.gitignore_global в качестве глобального файла игнорирования Git, выполните список действий:

  1. Создаем файл: touch ~/.gitignore_global
  2. Добавляем файл в Git-конфигурацию: git config —global core.excludesfile ~/.gitignore_global
  3. Открываем файл в редакторе и добавляем кастомные настройки.

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

Отладка файла .gitignore

Если у вас ряд файлов gitignore, то допустить ошибку очень просто. По итогу может получиться ненужный файл в репозитории. Для того чтобы отследить ошибки файлов, используйте команду git check-ignore с опцией -v, она показывает, что нужно отобразить данные совпадающего шаблона
Для проверки файла jar.lock, нужно осуществить команду:
git check-ignore -v www/jar.lock

После этого вы увидите примерно такое сообщение, которое отобразит получившийся путь к файлу
www/.gitignore:27:/jar.lock
www/jar.lock
Файл может находиться не только в вашем проекте.

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

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

Заключение

Файл.gitignore даёт возможность нам исключать лишние файлы для репозитория. При этом его можно отлично использовать в различных целях. Существует сервис по созданию файла gitignore.io даёт возможность сгенерировать файл .gitignore для ваших предназначений.

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

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

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

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

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

  • Файлы времени выполнения, такие как файлы журнала, блокировки, кеша или временные файлы.
  • Файлы с конфиденциальной информацией, такой как пароли или ключи API.
  • Скомпилированный код, например .class или .o .
  • /node_modules зависимостей, например /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.[0-2].log access.0.log
access.1.log
access.2.log
file.[ac].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 :

# Ignore the node_modules directory node_modules/ # Ignore Logs logs *.log # Ignore the build directory /dist # The file containing environment variables .env # Ignore IDE specific files .idea/ .vscode/ *.sw* 

Местный .gitignore

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

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

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

Личные правила игнорирования

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

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

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

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

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

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

touch ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

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

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

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

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

git rm --cached filename

Параметр —cached указывает git не удалять файл из рабочего дерева, а только удалять его из индекса.

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

git rm --cached filename

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

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

git rm -r -n directory

Отладка файла .gitignore

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

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

git check-ignore -v www/yarn.lock

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

www/.gitignore:31:/yarn.lock www/yarn.lock 

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

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

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

git status --ignored

Выводы

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

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

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

gitignore — игнорирование файлов в Git

В системе Git можно настроить возможность автоматического игнорирования файлов.

.gitignore
.sass
.gitignore

Создание нового проекта

git_ignore

Результат настройки файла .gitignore

Проиндексирую изменения, а затем выполню операции по созданию директорий и файлов внутри них:

$ mkdir ignore $ mkdir .ignore $ touch ignore/reset.css $ touch .ignore/normilize.css

Вновь ввожу команду просмотра состояния репозитория Git:

$ git status On branch master nothing to commit, working directory clean
ignore
.ignore

Шаблоны в файле .gitignore

.gitignore

Jest — использование skip

В Karma\Jasmine есть варианы для игнорирования выборочных тестов — xit, xdescribe. В этом посте — разберусь, какие есть варианты для этог. … Continue reading

Игнорирование папок в GIT

Столкнулся с проблемой, пользуюсь сброщиком проектов Grunt, при отправке на удаленный репозиторий хочу игнорировать папку node_modules , но постоянно выбивает ошибку. Пробую :

node_modules/ .gitignore node_modules/* .gitignore 

Подскажите, пожалуйста как правильно использовать в данном случае .gitignore , т.к. в этой папке очень много других папок и их все нужно игнорировать.

Отслеживать

67.9k 216 216 золотых знаков 77 77 серебряных знаков 219 219 бронзовых знаков

задан 10 сен 2016 в 18:04

63 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака

В корне проекта с гитом создаете файл .gitignore в котором прописываете node_modules/ . всё

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *