Culpa tempore impedit maxime adipisci provident. Nemo qui autem ducimus est ut. Ut voluptas cupiditate maxime voluptatibus voluptates. Sequi asperiores aspernatur quisquam in amet occaecati quia.
Suscipit quasi mollitia aut et ut voluptas dolor. Dolore provident ipsa minima culpa qui qui.
Et omnis ut quia commodi ipsum ut. Beatae eveniet molestiae nihil inventore tenetur quisquam dolorum beatae.
Consequatur amet ut ut modi illo et rem. Deleniti vitae laudantium consequatur sunt. Accusantium nesciunt a sed sequi error doloribus.
Eveniet quaerat omnis officiis nam beatae expedita. Quia dolor sed dolor in recusandae consequatur.
Aut ducimus dolores et eos illo. Delectus ipsum doloribus enim. Id ut earum ipsam accusantium.
Incidunt quidem sit atque sed consequatur. Dolorem ducimus aut qui necessitatibus maxime qui. Autem voluptas sint dignissimos sint dolorem perferendis sint. Qui officia rerum rerum rerum molestiae ut quam.
Aut perspiciatis nisi non explicabo. Sunt omnis dolores at nostrum neque aperiam omnis nihil. Qui quia iste velit modi.
Voluptas totam quas magnam. Nihil non velit asperiores qui laboriosam doloremque reprehenderit. Suscipit sequi magnam corporis enim est aut consequuntur.
.gitignore служит для указания в нём файлов и папок, которые необходимо скрыть от системы контроля версий git.
Как правило, скрывают файлы или папки, которые автоматически генерируют своё содержимое, либо имеют конфигурационные параметры, которые могут различаться у тех, кто совместно работает над проектом.
Приведу простой пример: у вас имеется файл "/config/db.php", в нём прописаны параметры подключения к БД, причём на вашей локальной машине и на сервере эти параметры будут разниться. А если эти файлы различны, то git будет при каждом pull/push ругаться на то, что имеется конфликт.
Другой пример: если вы используете NetBeans и настройки своего проекта храните непосредственно в папке с проектом, то вам необходимо закрыть от git`а директорию "nbproject", чтобы другие участники вашего проекта не страдали от того, что вы случайно закомитили эту директорию.
Данная ситуация легко разрешатся использованием файла .gitignore, который можно разместить в папке "/config/.gitignore" со следующим содержимым:
/db.php
Одна эта строчка укажет git, что необходимо игнорировать файл " db.php", который лежит в этой директории.
Рекомендуется размещать файл .gitignore в корне вашего приложения или проекта JetBrains, таким образом он всегда будет под рукой и отпадает необходимость вспоминать, где вы оставили другие такие же файлы.
Вот некоторые правила синтаксиса этого файла:
- Одна строчка - одно правило,
- Пустые строки игнорируются,
- Комментарии доступны через решётку(#) в начале строки,
- Символ "/" в начале строки указывает, что правило применяется только к файлам и папкам, которые располагаются в той же папке, что и сам файл .gitignore,
- Доступно использовать спецсимволы: звёздочка(*) заменяет любое количество символов(ноль или больше), вопросик(?) заменяет от нуля до одного символа. Можно размещать в любом месте правила,
- Две звёздочки(**) используются для указания любого количества поддиректорий, подробнее смотри ниже в примерах,
- Восклицательный знак(!) в начале строки означает инвертирование правила, необходим для указания исключений из правил игнорирования,
- Символ "\" используется для экранирования спецсимволов, например, чтобы игнорировать файл с именем "!readme!.txt", нужно написать такое правило: "\!readme!.txt",
- Для игнорирования всей директории, правило должно оканчиваться на слэш(/), в противном случае правило считается именем файла.
Привожу наглядный пример файла .gitignore:
# Игнор-лист файлов проекта
# Игнорировать ВСЕ файлы и директории, включая поддиректории и файлы в них
*
# ---- ФАЙЛЫ ----
# Игнорирование по типу файла, будут игнорироваться в АБСОЛЮТНО всех директориях
# Например /files/data.zip, /server.log, /uploads/users/data/info.xls
*.zip
*.log
*.pdf
*.xls
# Игнорирование файла во ВСЕХ директориях
# Например /params/db/config.php, /config.php
config.php
# Игнорирование конкретного файла ТОЛЬКО в корне проекта
# (корнём считается расположение файла .gitignore)
# Например НЕ БУДЕТ проигнорирован файл /db/config.php
/config.php
# Игнорирование конкретного файла ТОЛЬКО в указанной директории
# Например НЕ БУДЕТ проигнорирован файл /prod/params/config.php
/params/config.php
# ---- ДИРЕКТОРИИ ----
# Игнорирование всех файлов и папок ТОЛЬКО в конкретной директории(включая поддиректории и файлы в них)
# Например /images/user.jpg, /images/company/logo.png
# НЕ БУДУТ проигнорированы файлы и папки /prod/images/user.jpg
/images/*
# Игнорирование всех файлов и папок в ЛЮБЫХ директориях с указанным именем
# Например /images/user.jpg, /core/images/user.jpg
images/*
# Игнорирование ВСЕХ html-файлов в ОДНОЙ КОНКРЕТНОЙ директории(НЕ ВКЛЮЧАЯ поддиректории)
# Например /private/index.html
# НЕ БУДУТ проигнорированы файлы в /private/ivan/index.html
/private/*.html
# Игнорирование ВСЕХ html-файлов в КОНКРЕТНОЙ директории ВКЛЮЧАЯ поддиректории
# Например /private/info.html, /private/users/ivan/info.html
/private/**/*.html
# ---- РАЗНОЕ ----
# Исключение из игнорирования
# Игнорирование ВСЕХ файлов и папок внутри директории /secret,
# за исключением файла /secret/free.txt, он не будет проигнорирован
/secret/*
!/secret/free.txt
# Игнорирование файла с именем, содержащим спецсимволы
# Например !readme!.txt
\!readme!.txt
# Игнорирование всех JPG и JPEG файлов внутри директорий,
# которые начинаются на "h" и МОГУТ содержать ещё один символ после
# Например /images/h4/user.jpg, /images/h/company.jpeg
/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, то файл/директория так же склонируются".
Ответ таков: Нужно удалить из репозитория игнорируемые файлы/директории, делается это командой. После этого файл окончательно пропадёт из отслеживаемых git`ом.
git rm --cached [file]
Создание пользовательского .gitignore
https://www.gitignore.io/