Как создать файл gitignore в pycharm
Часто при работе над проектом, использующим Git, вам нужно исключить определенные файлы или каталоги из отправки в удаленный репозиторий. Здесь .gitignore файл .gitignore .
Файл .gitignore указывает, какие неотслеживаемые файлы Git должен игнорировать.
Какие файлы следует игнорировать?
Игнорируемые файлы обычно представляют собой файлы для конкретной платформы или автоматически созданные файлы из систем сборки. Вот некоторые общие примеры:
- Файлы времени выполнения, такие как файлы журнала, блокировки, кеша или временные файлы.
- Файлы с конфиденциальной информацией, такой как пароли или ключи API.
- Скомпилированный код, например .class или .o .
- /node_modules зависимостей, например /vendor или /node_modules .
- Каталоги сборки, например /public , /out или /dist .
- Системные файлы, такие как .DS_Store или Thumbs.db
- Файлы конфигурации IDE или текстового редактора .
.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.[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 :
Местный .gitignore
.gitignore файл .gitignore обычно помещается в корневой каталог репозитория. Однако вы можете создать несколько файлов .gitignore в разных подкаталогах вашего репозитория. Шаблоны в файлах .gitignore сопоставляются относительно каталога, в котором находится файл.
Шаблоны, определенные в файлах, которые находятся в каталогах (подкаталогах) более низкого уровня, имеют приоритет над шаблонами в каталогах более высокого уровня.
Локальные файлы .gitignore используются совместно с другими разработчиками и должны содержать шаблоны, полезные для всех других пользователей репозитория.
Личные правила игнорирования
Шаблоны, специфичные для вашего локального репозитория и не подлежащие распространению в другие репозитории, должны быть установлены в файле .git/info/exclude .
Например, вы можете использовать этот файл, чтобы игнорировать файлы, сгенерированные из ваших личных инструментов проекта.
Глобальный .gitignore
Git также позволяет вам создать глобальный файл .gitignore , в котором вы можете определить правила игнорирования для каждого репозитория Git в вашей локальной системе.
Файл можно назвать как угодно и хранить в любом месте. Чаще всего этот файл хранится в домашнем каталоге. Вам придется вручную создать файл и настроить Git для его использования.
Например, чтобы установить
/.gitignore_global в качестве глобального файла игнорирования Git, вы должны сделать следующее:
Добавьте файл в конфигурацию Git:
Откройте файл в текстовом редакторе и добавьте в него свои правила.
Глобальные правила особенно полезны для игнорирования определенных файлов, которые вы никогда не хотите фиксировать, например файлов с конфиденциальной информацией или скомпилированных исполняемых файлов.
Игнорирование ранее зафиксированных файлов
Файлы в вашей рабочей копии можно отслеживать или нет.
Чтобы проигнорировать файл, который был ранее зафиксирован, вам нужно деактивировать и удалить файл из индекса, а затем добавить правило для файла в .gitignore :
Параметр --cached указывает git не удалять файл из рабочего дерева, а только удалять его из индекса.
Чтобы рекурсивно удалить каталог, используйте параметр -r :
Если вы хотите удалить файл и из индекса, и из локальной файловой системы, опустите параметр --cached .
При рекурсивном удалении файлов используйте параметр -n , который выполнит «пробный запуск» и покажет вам, какие файлы будут удалены:
Отладка файла .gitignore
Иногда бывает сложно определить, почему игнорируется конкретный файл, особенно когда вы используете несколько файлов .gitignore или сложные шаблоны. Здесь пригодится команда git check-ignore с параметром -v , которая сообщает git отображать сведения о соответствующем шаблоне.
Например, чтобы проверить, почему файл www/yarn.lock игнорируется, вы должны запустить:
Вывод показывает путь к файлу gitignore , номер совпадающей строки и фактический шаблон.
Команда также принимает в качестве аргументов более одного имени файла, и файл не обязательно должен существовать в вашем рабочем дереве.
Отображение всех игнорируемых файлов
Команда git status с параметром --ignored отображает список всех игнорируемых файлов:
Выводы
Файл .gitignore позволяет исключить файлы из репозитория. Файл содержит шаблоны подстановки, которые описывают, какие файлы и каталоги следует игнорировать.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Git рассматривает каждый файл в вашей рабочей копии как файл одного из трех нижеуказанных типов.
- Отслеживаемый файл — файл, который был предварительно проиндексирован или зафиксирован в коммите.
- Неотслеживаемый файл — файл, который не был проиндексирован или зафиксирован в коммите.
- Игнорируемый файл — файл, явным образом помеченный для Git как файл, который необходимо игнорировать.
Игнорируемые файлы — это, как правило, артефакты сборки и файлы, генерируемые машиной из исходных файлов в вашем репозитории, либо файлы, которые по какой-либо иной причине не должны попадать в коммиты. Вот некоторые распространенные примеры таких файлов:
- кэши зависимостей, например содержимое /node_modules или /packages ;
- скомпилированный код, например файлы .o , .pyc и .class ;
- каталоги для выходных данных сборки, например /bin , /out или /target ;
- файлы, сгенерированные во время выполнения, например .log , .lock или .tmp ;
- скрытые системные файлы, например .DS_Store или Thumbs.db ;
- личные файлы конфигурации IDE, например .idea/workspace.xml .
Игнорируемые файлы отслеживаются в специальном файле .gitignore , который регистрируется в корневом каталоге репозитория. В Git нет специальной команды для указания игнорируемых файлов: вместо этого необходимо вручную отредактировать файл .gitignore , чтобы указать в нем новые файлы, которые должны быть проигнорированы. Файлы .gitignore содержат шаблоны, которые сопоставляются с именами файлов в репозитории для определения необходимости игнорировать эти файлы.
Шаблоны игнорирования в Git
Для сопоставления с именами файлов в .gitignore используются шаблоны подстановки. С помощью различных символов можно создавать собственные шаблоны.
Две звездочки (**) означают, что ваш файл .gitignore находится в каталоге верхнего уровня вашего репозитория, как указано в соглашении. Если в репозитории несколько файлов .gitignore, просто мысленно поменяйте слова «корень репозитория» на «каталог, содержащий файл .gitignore» (и подумайте об объединении этих файлов, чтобы упростить работу для своей команды)*.
Если у вас есть файлы или каталоги, в имени которых содержатся спецсимволы шаблонов, для экранирования этих спецсимволов в .gitignore можно использовать обратную косую черту (\):
Общие файлы .gitignore в вашем репозитории
Обычно правила игнорирования Git задаются в файле .gitignore в корневом каталоге репозитория. Тем не менее вы можете определить несколько файлов .gitignore в разных каталогах репозитория. Каждый шаблон из конкретного файла .gitignore проверяется относительно каталога, в котором содержится этот файл. Однако проще всего (и этот подход рекомендуется в качестве общего соглашения) определить один файл .gitignore в корневом каталоге. После регистрации файла .gitignore для него, как и для любого другого файла в репозитории, включается контроль версий, а после публикации с помощью команды push он становится доступен остальным участникам команды. В файл .gitignore , как правило, включаются только те шаблоны, которые будут полезны другим пользователям репозитория.
Персональные правила игнорирования в Git
В специальном файле, который находится в папке .git/info/exclude , можно определить персональные шаблоны игнорирования для конкретного репозитория. Этот файл не имеет контроля версий и не распространяется вместе с репозиторием, поэтому он хорошо подходит для указания шаблонов, которые будут полезны только вам. Например, если у вас есть пользовательские настройки для ведения журналов или специальные инструменты разработки, которые создают файлы в рабочем каталоге вашего репозитория, вы можете добавить их в .git/info/exclude , чтобы они случайно не попали в коммит в вашем репозитории.
Глобальные правила игнорирования в Git
Кроме того, для всех репозиториев в локальной системе можно определить глобальные шаблоны игнорирования Git, настроив параметр конфигурации Git core.excludesFile . Этот файл нужно создать самостоятельно. Если вы не знаете, куда поместить глобальный файл .gitignore , расположите его в домашнем каталоге (потом его будет легче найти). После создания этого файла необходимо настроить его местоположение с помощью команды git config :
Будьте внимательны при указании глобальных шаблонов игнорирования, поскольку для разных проектов актуальны различные типы файлов. Типичные кандидаты на глобальное игнорирование — это специальные файлы операционной системы (например, .DS_Store и thumbs.db ) или временные файлы, создаваемые некоторыми инструментами разработки.
Игнорирование ранее закоммиченного файла
Чтобы игнорировать файл, для которого ранее был сделан коммит, необходимо удалить этот файл из репозитория, а затем добавить для него правило в .gitignore . Используйте команду git rm с параметром --cached , чтобы удалить этот файл из репозитория, но оставить его в рабочем каталоге как игнорируемый файл.
Опустите опцию --cached , чтобы удалить файл как из репозитория, так и из локальной файловой системы.
Коммит игнорируемого файла
Можно принудительно сделать коммит игнорируемого файла в репозиторий с помощью команды git add с параметром -f (или --force ):
Этот способ хорош, если у вас задан общий шаблон (например, *.log ), но вы хотите сделать коммит определенного файла. Однако еще лучше в этом случае задать исключение из общего правила:
Этот подход более прозрачен и понятен, если вы работаете в команде.
Скрытие изменений в игнорируем файле
Команда git stash — это мощная функция системы Git, позволяющая временно отложить и отменить локальные изменения, а позже применить их повторно. По умолчанию команда git stash ожидаемо не обрабатывает игнорируемые файлы и создает отложенные изменения только для тех файлов, которые отслеживаются Git. Тем не менее вы можете вызвать команду git stash с параметром --all, чтобы создать отложенные изменения также для игнорируемых и неотслеживаемых файлов.
Отладка файлов .gitignore
Если шаблоны .gitignore сложны или разбиты на множество файлов .gitignore , бывает непросто отследить, почему игнорируется определенный файл. Используйте команду git check-ignore с параметром -v (или --verbose ), чтобы определить, какой шаблон приводит к игнорированию конкретного файла:
При желании команде git check-ignore можно передать несколько имен файлов, причем сами имена могут даже не соответствовать файлам, существующим в вашем репозитории.
Написав какой-нибудь чудесный код, вам, возможно, захочется сделать его доступным для остальных. Питонский способ поделиться пакетом – это разместить его на PyPI. Давайте создадим простой пакет и попробуем пройти через весь процесс его публикации!
Наш пакет: левая панель
Разработчики JavaScript хороши в том, как нужно делиться кодом: если кто-то написал функционал, он делится им, так что никому больше не нужно изобретать велосипед (впрочем, некоторых это не останавливает). Отличный пример такой самоотверженности, это шикарная библиотека left-pad, и сегодня мы создадим клон этой библиотеки и поделимся её величием с сообществом Python! Кто-то уже послужил обществу, выпустив пакет left-pad в PyPI. Однако, этот пакет не содержит ни модульных тестов, ни репозиторий GitHub, почему мы не можем сделать лучше? Давайте создадим замену, и назовем её pad-on-left. Очень важно проверить, не занято ли название вашего пакета в данный момент на PyPI, перед тем как начать. Чтобы сделать это, просто воспользуйтесь окном поиска в правом верхнем углу страницы PyPI.
Структура пакета
Чтобы наш пакет работал с PyPI (что в целом означает, что нам нужна работа с distutils), наш пакет нуждается в нескольких файлах:
Нам нужно написать файл README, по умолчанию в Python для этого используется ReStructuredText. Вы можете познакомиться с ReStructuredText в документации Sphinx. Если вы предпочитаете использовать Markdown, или любой другой файловый формат, вам нужно добавить файл setup.cfg туда, где вы определяете название файла. Более того, вам нужно подобрать лицензию для вашего кода. Люди не могут пользоваться вашим кодом без лицензии. В данном случае, мы выберем разрешительную лицензию с открытым исходным кодом, я использую лицензию Apache 2.0, но для вашего проекта вы можете использовать лицензию MIT, или любую другую. Мы создадим файл setup.py в будущем, используя PyCharm. Давайте начнем с нового, чистого проекта Python, и напишем приложение.
Написание приложения
Необходимая нам функция для написания очень проста: мы берем строку, или число, если оно меньше определенной длинны, мы должны добавить символы для заполнения левой стороны, пока не достигнем необходимой длины. В отличие от JavaScript, стандартная библиотека Python располагает специальным методом:
return str ( input ) . rjust ( length , str ( fill_character ) )Теперь добавим несколько тестов. Если вы перейдете на страницу npm (Node package manager, аналог pip для JavaScript) для left-pad, то увидите несколько вложенных примеров. Давайте убедимся в том, что наш код корректно выполняет эти примеры. Отличный способ модульного тестирования Python является использование doctest-ов. Они позволяют вам писать примеры в docstring-ах вашего кода, и затем doctest будет выполнять эти примеры, а также подтверждать, соответствует ли ваш код документации:
Returns a string, which will be padded on the left with characters if necessary. If the input string is longer than the specified length, it will be returned unchanged. return str ( input ) . rjust ( length , str ( fill_character ) )Для запуска теста, добавьте конфигурацию запуска doctest: перейдите в Run Configuration и добавьте конфигурации test и doctest. После этого вы можете определить путь, для этого существует несколько способов, я решил настроить его для поиска в папке моего пакета. После этого, вы можете запустить тест и проверить, проходят ли модульные тесты.
Теперь сгенерируем файл setup.py, выбрав Tools -> Create setup.py:
Публикация кода в GitHub
Добавьте файл .gitignore, выделите все свои файлы и затем добавьте их в git при помощи Ctrl+Alt+A (Cmd+Alt+A). Затем зафиксируйте (Ctrl + K / Cmd + K) ваши файлы, чтобы создать первоначальную фиксацию. Теперь опубликуйте в GitHub: снова откройте Find Action (Ctrl + Shift + A) и найдите «Share Project on GitHub».
С этого момента, нам нужно зарегистрировать как реальный, так и тестовый PyPI.
Чтобы использовать эти учетные данные, нам нужно создать файл .pypirc. Это ini файл конфигурации, так что давайте создадим скреч файл, который мы можем сохранить в надлежащем месте. Используйте Shift+Ctrl+Alt+Insert для создания скреч файла, указав ini в качестве языка.
Главное меню » Статьи » Игнорирование файлов и каталогов в 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.2.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, вы должны сделать следующее:
- Создайте файл:
- Добавьте файл в конфигурацию Git:
- Откройте файл в текстовом редакторе и добавьте в него свои правила.
Глобальные правила особенно полезны для игнорирования определенных файлов, которые вы никогда не хотите зафиксировать, таких как файлы с конфиденциальной информацией или скомпилированные исполняемые файлы.
Игнорирование ранее зафиксированных файлов
Файлы в вашей рабочей копии могут быть отслежены или не отслежены.
Чтобы рекурсивно удалить каталог, используйте параметр -r:
При рекурсивном удалении файлов используйте опцию -n, которая выполнит «пробный запуск» и покажет вам, какие файлы будут удалены:
Файл отладки .gitignore
Иногда бывает сложно определить, почему конкретный файл игнорируется, особенно когда вы используете несколько файлов .gitignore или сложные шаблоны. Вот тут-то и пригодится команда git check-ignore с опцией -v, которая говорит git отображать подробности о соответствующем шаблоне.
Например, чтобы проверить, почему файл www/yarn.lock игнорируется, вы должны выполнить:
Выходные данные показывают путь к файлу gitignore, номер совпадающей строки и фактический шаблон.
Команда также принимает более одного имени файла в качестве аргументов, и файл не обязательно должен существовать в вашем рабочем дереве.
Отображение всех игнорируемых файлов
Заключение
Файл .gitignore позволяет исключить из списка проверяемых файлов в хранилище. Файл содержит шаблоны смещения, которые описывают, какие файлы и каталоги следует игнорировать.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: