Разное

Gitignore файл: Подробнее о файле .gitignore — orlov.io

Содержание

Подробнее о файле .gitignore — orlov.io

27
мая

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

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

Приведу простой пример: у вас имеется файл «
/config/db.php«, в нём прописаны параметры подключения к БД, причём на вашей локальной машине и на сервере эти параметры будут разниться.

А если эти файлы различны, то git будет при каждом pull/push ругаться на то, что имеется конфликт.

Другой пример: если вы используете NetBeans и настройки своего проекта храните непосредственно в папке с проектом, то вам необходимо закрыть от git`а директорию «nbproject«, чтобы другие участники вашего проекта не страдали от того, что вы случайно закомитили эту директорию.

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

  1. /db.php

Одна эта строчка укажет git, что необходимо игнорировать файл »
db.php«, который лежит в этой директории.

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

Вот некоторые правила синтаксиса этого файла:

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

Привожу наглядный пример файла
.gitignore:

  1. # Игнор-лист файлов проекта

  2. # Игнорировать ВСЕ файлы и директории, включая поддиректории и файлы в них

  3. *

  4. # ---- ФАЙЛЫ ----

  5. # Игнорирование по типу файла, будут игнорироваться в АБСОЛЮТНО всех директориях

  6. # Например /files/data.zip, /server.log, /uploads/users/data/info.xls

  7. *.zip

  8. *.pdf

  9. *.xls

  10. # Игнорирование файла во ВСЕХ директориях

  11. # Например /params/db/config.php, /config.php

  12. config.php

  13. # Игнорирование конкретного файла ТОЛЬКО в корне проекта

  14. # (корнём считается расположение файла .gitignore)

  15. # Например НЕ БУДЕТ проигнорирован файл /db/config.php

  16. /config.php

  17. # Игнорирование конкретного файла ТОЛЬКО в указанной директории

  18. # Например НЕ БУДЕТ проигнорирован файл /prod/params/config. php

  19. /params/config.php

  20. # ---- ДИРЕКТОРИИ ----

  21. # Игнорирование всех файлов и папок ТОЛЬКО в конкретной директории(включая поддиректории и файлы в них)

  22. # Например /images/user.jpg, /images/company/logo.png

  23. # НЕ БУДУТ проигнорированы файлы и папки /prod/images/user.jpg

  24. /images/*

  25. # Игнорирование всех файлов и папок в ЛЮБЫХ директориях с указанным именем

  26. # Например /images/user.jpg, /core/images/user.jpg

  27. images/*

  28. # Игнорирование ВСЕХ html-файлов в ОДНОЙ КОНКРЕТНОЙ директории(НЕ ВКЛЮЧАЯ поддиректории)

  29. # Например /private/index.html

  30. # НЕ БУДУТ проигнорированы файлы в /private/ivan/index.html

  31. /private/*.html

  32. # Игнорирование ВСЕХ html-файлов в КОНКРЕТНОЙ директории ВКЛЮЧАЯ поддиректории

  33. # Например /private/info.html, /private/users/ivan/info.html

  34. /private/**/*. html

  35. # ---- РАЗНОЕ ----

  36. # Исключение из игнорирования

  37. # Игнорирование ВСЕХ файлов и папок внутри директории /secret,

  38. # за исключением файла /secret/free.txt, он не будет проигнорирован

  39. /secret/*

  40. !/secret/free.txt

  41. # Игнорирование файла с именем, содержащим спецсимволы

  42. # Например !readme!.txt

  43. \!readme!.txt

  44. # Игнорирование всех JPG и JPEG файлов внутри директорий,

  45. # которые начинаются на "h" и МОГУТ содержать ещё один символ после

  46. # Например /images/h5/user.jpg, /images/h/company.jpeg

  47. /images/h?/*.jp?g

В репозитории
https://github.com/github/gitignore вы можете найти примеры .gitignore-файлов для своего проекта. Например, если вы используете Yii framework, то вам следует обратить внимание на файл https://github.com/github/gitignore/blob/master/Yii.gitignore, в нём перечислены основные директории, которые следует исключить из git-репозитория.

У некоторых может возникнуть вопрос:


«Я добавил в .gitignore файл/директорию, но после пуша в репозиторий там сохранился игнорируемый файл/директория, и если сделать git clone, то файл/директория так же склонируются«.
Ответ таков: Нужно удалить из репозитория игнорируемые файлы/директории, делается это командой:

  1. git rm --cached <file>

После этого файл окончательно пропадёт из отслеживаемых git`ом.

Конфигурация файла .gitignore в Git

Файл .gitignore необходим для сокрытия файлов и директорий от Git. Чаще всего, исключают конфигурационные файлы (особенно с паролями), временные файлы и директории. Синтаксис файла .gitignore соответствует glob формату для отбора.

Основной синтаксис:

Каждая строчка — отдельный шаблон
Пустые строки просто игнорируются
Строки, которые начинаются с решетки (#) — комментарии
Прямой слеш (/) в начале строки указывает на текущую корневую директорию (где находится файл . gitignore)
Астериск (*) заменяет любое количество символов
Два астериска (**) используются для указания всех субдиректорий
Восклицательный знак (!) в начале строки инвертирует шаблон (используется для исключений)
Для экранирования спецсимволов используем обратный слэш (\).
Для игнорирования всей директории, правило должно оканчиваться на слэш(/), в противном случае правило считается именем файла.

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

# Игнорируем файл file1.txt.
file1.txt
# Игнорируем tmp файлы
*.tmp
# Но конкретно main.tmp не игнорировать
!main.tmp
# Игнорируем zip файлы только в корне проекта
/*.zip
# Игнорируем css файлы из папки bar не включая подпапки
# Допустим файл /bar/temp/main.css не будет проигнорирован т.к. он в подпапке temp
/bar/*.css
# Игнорировать js файлы из папки bar и подпапок, если таковые будут
/bar/**.*.js

Как исключить директорию из отслеживания, но добавить субдиректорию в отслеживание?

Задача 1

Убрать папку node_modules, но оставить в ней 2 подпапки jquery и semantic

├── js
│ ├── app. js
│ └── system.js
├── scss
│ ├── system.scss
│ └── theme.scss
└── vendor
├── node_modules <-- Убрать
│ ├── load-json-file
│ ├── lodash
│ ├── jquery <-- Оставить
│ ├── make-error
│ ├── semantic <-- Оставить
│ └── yargs
└── semantic.json

Решение:

/vendor/node_modules/*
!/vendor/node_modules/jquery/
!/vendor/node_modules/semantic/

Задача 2

Убрать папку node_modules, но оставить в её подпапке jquery подпапку dist

├── js
│ ├── app.js
│ └── system.js
├── scss
│ ├── system.scss
│ └── theme.scss
└── vendor
├── node_modules <-- Убрать
│ ├── load-json-file
│ ├── lodash
│ ├── jquery
│ │ └──dist <-- Оставить
│ ├── make-error
│ ├── semantic
│ └── yargs
└── semantic.json

Решение:

/vendor/node_modules/*
/vendor/node_modules/jquery/*
!/vendor/node_modules/jquery/
!/vendor/node_modules/jquery/dist/

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

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

$ git rm --cached

Например убрать папку storage/framework/cache/ (обратите внимание: вначале отсутствует слеш)

$ git rm -r --cached "storage/framework/cache/"

За подробностями можете обратиться к официальному руководству.

GIT игнорирование изменений в локальных файлах

Иногда бывает нужно внести изменения в локальные файлы таким образом, чтобы git в дальнейшем при добавлении (git add .) или коммите (git commit -a) не отслеживал эти изменения и не сохранял их в репозиторий. Самое простое решение на первый взгляд добавить такие файлы в .gitignore, но оно не работает к файлам уже находящимся в репозитории и git по преждему отслеживает изменения этих файлов.

К счастью, есть простое решение для этого. В GIT игнорирование изменений в локальных файлах, которые уже находятся в репозитории, можно настроить с помощью одной команды. h'»

Которые в дальнейшем можно использовать следующим образом:

git untrack <file>
git ls-untrack
git track <file>

git untrack <file>

git ls-untrack

git track <file>

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

Git видит каждый файл в вашей рабочей копии как одно из трех:

  1. отслеживается — файл, который ранее был поставлен или зафиксирован;
  2. неотслеживаемый — файл, который еще не поставил или зафиксировал; или
  3. ignored — файл, который Git явно должен игнорировать.

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

  • кэшей зависимостей, таких как содержимое / node_modules или / packages
  • скомпилированного кода, например . o , .pyc и .class файлов
  • выходных каталогов сборки, таких как / bin , / out или / target
  • файлов, сгенерированных во время выполнения, таких как .log , .lock или .tmp
  • скрытых системных файлов, например .DS_Store или Thumbs.db
  • личных конфигурационных файлов IDE, таких как .idea / workspace.xml

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

Шаблоны игнорирования Git

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

Шаблон Пример совпадений Объяснение *
** / журналы журналы / debug.log
журналы / понедельник / 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
журналы / отладка.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
, но не
журналы / отладка.log
Добавление косой черты соответствует файлам только в корне репозитория.
debug.log debug.log
logs / debug.log
По умолчанию шаблоны соответствуют файлам в любом каталоге
debug? .Log debug0. log
debugg.log
, но не
debug10.log
Знак вопроса соответствует ровно одному символу.
debug [0-9] .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
Восклицательный знак может быть используется для соответствия любому символу, кроме одного из указанного набора.
отладка [a-z] .log отладка.log
debugb.log
, но не
debug1.log
Диапазоны могут быть числовыми или буквенными.
журналы журналы
журналы / debug.log
журналы / latest / foo.bar
сборка / журналы
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.журнал
журналы / debug.log
журналы / important.log
Погодите! Не следует отрицать значение logs / important.log в примере слева.

Нет! Из-за причуды, связанной с производительностью в Git, вы не можете инвертировать файл, который игнорируется из-за соответствия шаблона каталогу

logs / ** / debug. log logs / debug. журнал
журналы / понедельник / отладка.log
logs / monday / pm / debug.log
Двойная звездочка соответствует нулю или более каталогам.
журналов / * день / debug.log журналов / понедельник / debug.log
журналов / вторник / debug.log
, но не
журналов / последний / debug.log
Подстановочные знаки также можно использовать в именах каталогов.
журналы / debug.log журналы / отладка.log
, но не
debug.log
build / logs / debug.log
Шаблоны, определяющие файл в определенном каталоге, относятся к корню репозитория. (Вы можете добавить косую черту, если хотите, но это не делает ничего особенного.)

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

В дополнение к этим символам вы можете использовать # для включения комментариев в файл .gitignore :

  # игнорировать все логи * .log  

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

  # игнорировать файл с буквальным именем foo [01] .txt foo \ [01 \]. Txt  

Общие файлы .gitignore в вашем репозитории

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

Персональные правила игнорирования Git

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

Global Git игнорировать правила

Кроме того, вы можете определить глобальные шаблоны игнорирования Git для всех репозиториев в вашей локальной системе, установив свойство Git core.excludesFile . Вам придется создать этот файл самостоятельно. Если вы не знаете, где разместить глобальный файл .gitignore , ваш домашний каталог — неплохой выбор (и его будет легко найти позже). После того, как вы создали файл, вам необходимо настроить его местоположение с помощью git config :

  $ touch ~ /.gitignore $ git config --global core.excludesFile ~ / .gitignore  

Вы должны быть осторожны с тем, какие шаблоны вы выбираете для глобального игнорирования, поскольку разные типы файлов актуальны для разных проектов. Специальные файлы операционной системы (например, .DS_Store и thumbs.db ) или временные файлы, созданные некоторыми инструментами разработчика, являются типичными кандидатами для глобального игнорирования.

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

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

  $ echo debug.log >> .gitignore $ git rm --cached debug.log rm 'debug.log' $ git commit -m "Начать игнорирование debug.log"  

Вы можете опустить опцию --cached , если хотите удалить файл как из репозитория, так и из локальной файловой системы.

Фиксация игнорируемого файла

Можно принудительно зафиксировать игнорируемый файл в репозитории с помощью параметра -f (или --force ) с git add :

  $ cat .gitignore * .log $ git add -f debug.log $ git commit -m «Принудительное добавление debug. log»  

Вы можете подумать о том, чтобы сделать это, если у вас есть общий шаблон (например, * .log ), но вы хотите зафиксировать конкретный файл. Однако лучшим решением является определение исключения из общего правила:

  $ echo! Debug.log >> .gitignore $ cat .gitignore * .log! debug.log $ git add debug.log $ git commit -m "Добавление debug.log"  

Этот подход более очевиден и менее запутан для ваших товарищей по команде.

Хранение проигнорированного файла

git stash — это мощная функция Git для временного откладывания и отмены локальных изменений, позволяющая повторно применить их позже. Как и следовало ожидать, по умолчанию git stash игнорирует игнорируемые файлы и сохраняет изменения только в тех файлах, которые отслеживаются Git.Однако вы можете вызвать git stash с параметром —all, чтобы сохранить изменения в игнорируемых и неотслеживаемых файлах.

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

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

  $ git check-ignore -v debug.журнал .gitignore: 3: *. журнал debug.log  

Вывод показывает:

 ::  

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

Игнорирование файлов — GitHub Docs

Документы GitHub

  • Все продукты

  • GitHub.com
    • Начиная

      • Быстрый старт

        • Настроить Git
        • Создать репо
        • Форк репо
        • Быть социальным
      • Изучение GitHub

        • Продукты GitHub
        • Изучение выпусков раннего доступа с предварительным просмотром функций
        • Типы аккаунтов GitHub
        • Часто задаваемые вопросы об изменениях в планах GitHub
        • Интерфейс командной строки GitHub
        • GitHub Desktop
        • GitHub для мобильных устройств
        • Разрешения на доступ на GitHub
        • Глоссарий GitHub
        • Шпаргалка по Git
        • Учебные ресурсы Git и GitHub
      • Регистрация на GitHub

        • Регистрация новой учетной записи GitHub
        • Подтверждение адреса электронной почты
        • Настройка пробной версии GitHub Enterprise Cloud
        • Настройка пробной версии GitHub Enterprise Server
      • Изучение проектов на GitHub

        • Поиск способов внести свой вклад в открытый исходный код на GitHub
        • Сохранение репозиториев со звездочками
        • Следуя за людьми
      • Использование GitHub

        • Поддерживаемые браузеры
        • Устранение проблем с подключением
        • Горячие клавиши
    • Учетные записи пользователей

Как использовать. Файлы gitignore — BMC Blogs

При фиксации в любом репозитории Git вы выбираете файлы, которые хотите обработать, а затем фиксируете их.

Но вы, возможно, не захотите фиксировать каждый из ваших файлов — есть файлы, которые никогда не нужно фиксировать. Здесь полезен файл .gitignore: он сообщает Git, какие именно файлы следует игнорировать и никогда не отслеживать.

Давайте посмотрим.

Что такое gitignore?

Когда вы работаете с копией, Git просматривает каждый файл и рассматривает его тремя способами:

  1. Отслеживается: вы уже разместили или зафиксировали файл.
  2. Без отслеживания: вы не инсценировали и не совершали никаких действий.
  3. Игнорируется: вы явно указали Git игнорировать файл (ы).

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

Сам файл .gitignore представляет собой простой текстовый документ. Вот пример файла .gitignore:

 # Бинарные файлы для программ и плагинов
*.исполняемый
* .exe ~
* .dll
*.так
* .dylib

# Тестовый двоичный файл, созданный с помощью `go test -c`
*.контрольная работа

# Вывод инструмента покрытия go, особенно при использовании с LiteIDE
*.вне

# Каталоги зависимостей (удалите комментарий ниже, чтобы включить его)
поставщик /

 
  • * используется как подстановочный знак * .exe будет игнорировать любой файл с расширением .exe
  • / игнорирует каталоги с таким именем. vendor / игнорирует каталог vendor.
  • # прокомментирует строку
  • […] игнорирует значения с любым из значений.
    • *. [Abc] игнорирует файлы file.a, file.b, file.c.
    • *. [A — *. [Oa] d] тире будет включать диапазон, в данном случае расширения файлов a-d.

Почему мне нужно игнорировать файлы в Git?

Вы можете игнорировать определенные файлы по нескольким причинам:

  • Файлы содержат конфиденциальные данные.
  • Файлы зависят от системы и не обязательно должны находиться на каждой копии машины.
  • Исключение файлов поддерживает системные правила безопасности и привилегии.(Помните, что репозитории Git содержат только файлы, необходимые для получения технической поддержки, а не для совместного использования всего программного обеспечения.)

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

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

Элементы для добавления в .gitignore

Не все входит в gitignore, но вот общие элементы, которые следует игнорировать:

Системные файлы

Системные файлы необходимо игнорировать. Но вы можете добавить эти файлы в глобальный файл игнорирования вместо файла игнорирования репозитория.

Рабочие области Vscode

Такие элементы, как рабочая область vscode, необходимо игнорировать.

Безопасность и ключи / секреты API

В целях безопасности файлы ключей безопасности и ключи API должны быть добавлены в gitignore.(То есть, если они даже хранятся в каталоге). Каждая фиксация записывается в историю репозитория GitHub. Если ключ отправлен, даже если он удаляется сразу после этого, запись ключа существует в этой фиксации.

Как создать глобальный gitignore для вашей системы

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

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

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

 git status –ignored

 

Начало работы с gitignore

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

  • Python имеет свои собственные файлы.
  • У системных администраторов есть свои файлы.
  • MacOS и Windows имеют свой тип игнорируемых файлов.
  • Различные IDE, такие как VScode и Atom, имеют свои собственные файлы .gitignore.

Чтобы начать работу с тем, которое может удовлетворить ваши потребности:

  1. Изучите шаблоны. Github предоставляет репозиторий шаблонов .gitignore
  2. Поиск файлов проекта. Toptal позволяет искать файлы .gitignore на основе вашего проекта
  3. .

  4. В режиме программирования поиск в Google «.gitignore для [моей цели]» тоже может помочь вам в этом.

Дополнительные ресурсы

Дополнительную информацию по связанным темам можно найти в руководстве BMC DevOps.

Эти сообщения являются моими собственными и не обязательно отражают позицию, стратегию или мнение BMC.

Обнаружили ошибку или есть предложение? Сообщите нам об этом по электронной почте [email protected].

Правильное использование .gitignore

Вы когда-нибудь задумывались, какие шаблоны допускает .gitignore ? Было ли это ** / * / цель , цель / * или * цель * ?? Читайте и узнайте!

Мотивация

Каждый, кто использует Git, рано или поздно должен определить .gitignore во вновь созданном проекте. Мы просто не хотим контролировать все версии, особенно сгенерированные файлы, такие как Maven target или Gradle build . Итак, как именно мы можем указать, какие файлы исключить? Можем ли мы использовать синтаксис в стиле Ant, например ** / * , простые подстановочные знаки * target или даже Regex [a-z] {0,3} ?

Правда

Есть только один источник истины. Официальная документация Git по gitignore : https: // git-scm.com / docs / gitignore

Если бы только люди прочитали это перед отправкой в ​​Stackoverflow…

Как оказалось, Git не использует ни регулярное выражение, ни подстановочные знаки, ни синтаксис в стиле Ant, а шаблоны глобусов unix (особенно те, которые действительны для fnmatch (3) ). Не волнуйтесь, вам не нужно читать документацию fnmatch (3) , просто обратитесь к таблицам в следующих разделах.

Наиболее важные варианты использования

Перво-наперво, как мы можем исключить каждую целевую папку , созданную Maven в каждом подмодуле?

Ответ очень прост: target /
Это будет соответствовать любому каталогу (но не файлам, следовательно, / в конце) в любом подкаталоге относительно .gitignore файл. Это означает, что нам вообще не нужен * .

Вот обзор наиболее подходящих шаблонов:

. gitignore запись Игнорирует каждые…
target / папка (из-за конечной / ) рекурсивно
target файл или папка с именем target рекурсивно
/ target файл или папка с именем target в самом верхнем каталоге ( из-за ведущей /)
/ target / папка с именем target в самом верхнем каталоге (ведущая и конечная /)
*.class … каждый файл или папка , заканчивающиеся на .class рекурсивно

Расширенные варианты использования

Для более сложных вариантов использования обратитесь к следующей таблице:

.gitignore запись Игнорирует каждые…
#comment … ничего, это комментарий (первый символ — # )
\ #comment … каждый файл или папка с именем #comment ( \ для экранирования)
target / logs / … каждая папка с именем logs , которая является подкаталогом папки с именем target
target / * / logs / … каждая папка с именем регистрирует на двух уровнях в папке с именем target ( * не 9090 9 включает /)
target / ** / logs / … каждая папка с именем logs где-то в папке с именем target ( ** включает /)
*. py [co] … файл или папка, заканчивающиеся на .pyc или .pyo . Однако он не соответствует .py !
! README.md Не игнорирует файл README.md , даже если он соответствует шаблону исключения, например * .md .
ПРИМЕЧАНИЕ Это не работает, если файл находится в игнорируемой папке.

Примеры

Java-проект на основе Maven
  target /
*.класс
* .jar
* .war
* .ear
* .logs
* .iml
.idea /
.затмение
  
Важные файлы точек в вашей домашней папке
  # все игнорировать ...
/ *
# ... но следующие
!/.профиль
! /. bash_rc
! /. bash_profile
! /. curlrc
  

Подождите, есть еще

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

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

Один полезный файл, который вы можете определить самостоятельно, — это глобальный файл игнорирования. У него нет расположения по умолчанию или имени файла. Вы можете определить это самостоятельно с помощью следующей команды:

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

Каждое правило, которое входит в этот файл, применяется ко всем репозиториям Git в вашей учетной записи. Это особенно полезно для файлов ОС, таких как .DS_Store в MacOS или thumbs.db в Windows.

Заключение

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

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

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