Как игнорировать файлы в git
Игнорировать изменения файлов с помощью Git
Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015
Из этого руководства вы узнаете, как выполнить следующие задачи:
Использование gitignore для предотвращения отслеживания файлов
Создание. gitignore
Если вы используете Visual Studio 2019 версии 16.8 или выше, опробуйте систему управления версиями Git. Узнайте, чем интерфейс Git отличается от Team Explorer, на странице наглядного сравнения.
Visual Studio автоматически создает файл . gitignore в репозитории при создании нового репозитория для проекта.
Скачайте файл template. gitignore для типа проекта и настройте его в соответствии с вашими потребностями. Если проект не соответствует шаблону, можно создать пустой . gitignore из командной строки. Перейдите в репозиторий Git и выполните одну из следующих команд, используя сведения о репозитории:
Windows
Linux и macOS
Git применяет . gitignore к папке и вложенным папкам, где она находится. Мы рекомендуем разместить . gitignore в корневой папке репозитория, чтобы избежать путаницы.
Настройка. gitignore
Если вы используете Visual Studio 2019 версии 16.8 или выше, опробуйте систему управления версиями Git. Узнайте, чем интерфейс Git отличается от Team Explorer, на странице наглядного сравнения.
чтобы изменить файл gitignore для репозитория, перейдите в представление Параметры в Team Explorer, а затем выберите репозиторий Параметры. Выберите изменить для gitignore.
Используйте текстовый редактор, например следующий пример, в котором используется vim:
Каждая строка в . gitignore исключает файл или набор файлов, соответствующих шаблону. Полный синтаксис gitignore очень гибок. Ниже приведены некоторые примеры наиболее распространенных записей.
Пропускать файлы только в вашей системе
Пропускать файлы во всех репозиториев в системе
Этот подход удобен для игнорирования целых типов файлов, которые вы не хотите зафиксировать, например скомпилированных двоичных файлов.
Игнорировать изменения в зафиксированных файлах
Временно игнорировать изменения
Во время разработки удобно отключить отслеживание изменений файлов в файле, зафиксированном в репозитории Git. Этот подход удобен при настройке параметров или файлов конфигурации, которые являются частью источника проекта, для собственной рабочей среды.
Возобновление отслеживания файлов с помощью следующей команды:
Вместо этого можно использовать следующие параметры. Эти параметры предназначены главным образом для отметки файлов, которые не должны изменяться разработчиками.
Чтобы отключить отслеживание изменений, выполните следующие действия.
Чтобы возобновить отслеживание изменений, выполните следующие действия.
Безвозвратная отмена отслеживания файла
Если вы хотите отключить отслеживание файла, необходимо явно указать git, который он должен удалить из отслеживания. Следуя этим указаниям, файл останется в локальном рабочем каталоге, но не будет относиться к записи в Git.
Выполните следующую команду:
Зафиксируйте удаление файла и обновленный файл . gitignore в репозитории.
Игнорирование файлов и каталогов в Git (.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 |
** — Два соседних символа звездочки соответствуют любому файлу или нулю или более каталогам. Если за ним следует косая черта ( / ), он соответствует только каталогам.
? — Знак вопроса соответствует любому одиночному символу.
Шаблон | Примеры совпадений |
---|---|
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 Пример
Шаблоны, определенные в файлах, которые находятся в каталогах (подкаталогах) более низкого уровня, имеют приоритет над шаблонами в каталогах более высокого уровня.
Личные правила игнорирования
Например, вы можете использовать этот файл, чтобы игнорировать файлы, сгенерированные из ваших личных инструментов проекта.
Файл можно назвать как угодно и хранить в любом месте. Чаще всего этот файл хранится в домашнем каталоге. Вам придется вручную создать файл и настроить Git для его использования.
Например, чтобы установить
/.gitignore_global в качестве глобального файла игнорирования Git, вы должны сделать следующее:
Добавьте файл в конфигурацию Git:
Откройте файл в текстовом редакторе и добавьте в него свои правила.
Глобальные правила особенно полезны для игнорирования определенных файлов, которые вы никогда не хотите фиксировать, например файлов с конфиденциальной информацией или скомпилированных исполняемых файлов.
Игнорирование ранее зафиксированных файлов
Файлы в вашей рабочей копии можно отслеживать или нет.
Например, чтобы проверить, почему файл www/yarn.lock игнорируется, вы должны запустить:
Команда также принимает в качестве аргументов более одного имени файла, и файл не обязательно должен существовать в вашем рабочем дереве.
Отображение всех игнорируемых файлов
Выводы
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
.gitignore
Git рассматривает каждый файл в вашей рабочей копии как файл одного из трех нижеуказанных типов.
Игнорируемые файлы — это, как правило, артефакты сборки и файлы, генерируемые машиной из исходных файлов в вашем репозитории, либо файлы, которые по какой-либо иной причине не должны попадать в коммиты. Вот некоторые распространенные примеры таких файлов:
Шаблоны игнорирования в Git
Шаблон | Примеры соответствия | Пояснение* |
---|---|---|
**/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 | Знак вопроса соответствует строго одному символу. |
debug3.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 | Шаблоны, указывающие на файл в определенном каталоге, задаются относительно корневого каталога репозитория. (При желании можно добавить в начало косую черту, но она ни на что особо не повлияет.) |
Персональные правила игнорирования в Git
Глобальные правила игнорирования в Git
Игнорирование ранее закоммиченного файла
Коммит игнорируемого файла
Этот способ хорош, если у вас задан общий шаблон (например, *.log ), но вы хотите сделать коммит определенного файла. Однако еще лучше в этом случае задать исключение из общего правила:
Этот подход более прозрачен и понятен, если вы работаете в команде.
Скрытие изменений в игнорируем файле
При желании команде git check-ignore можно передать несколько имен файлов, причем сами имена могут даже не соответствовать файлам, существующим в вашем репозитории.
Готовы изучить Git?
Ознакомьтесь с этим интерактивным обучающим руководством.
Игнорирование файлов и каталогов в Git (.gitignore)
Главное меню » Статьи » Игнорирование файлов и каталогов в Git (.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 не будет проигнорирован |
Шаблоны, определенные в файлах, которые находятся в каталогах (подкаталогах) более низкого уровня, имеют приоритет над шаблонами в каталогах более высокого уровня.
Правила личного игнорирования
Например, вы можете использовать этот файл для игнорирования сгенерированных файлов из ваших личных инструментов проекта.
Файл может быть назван как угодно и храниться в любом месте. Наиболее распространенным местом для хранения этого файла является домашний каталог. Вам придется вручную создать файл и настроить Git для его использования.
Например, чтобы установить
/.gitignore_global в качестве глобального файла игнорирования Git, вы должны сделать следующее:
Глобальные правила особенно полезны для игнорирования определенных файлов, которые вы никогда не хотите зафиксировать, таких как файлы с конфиденциальной информацией или скомпилированные исполняемые файлы.
Игнорирование ранее зафиксированных файлов
Файлы в вашей рабочей копии могут быть отслежены или не отслежены.
Если вы хотите удалить файл как из индекса, так и из локальной файловой системы, опустите опцию –cached.
Например, чтобы проверить, почему файл www/yarn.lock игнорируется, вы должны выполнить:
Выходные данные показывают путь к файлу gitignore, номер совпадающей строки и фактический шаблон.
Команда также принимает более одного имени файла в качестве аргументов, и файл не обязательно должен существовать в вашем рабочем дереве.
Отображение всех игнорируемых файлов
Команда git statusс параметром –ignored отображает список всех игнорируемых файлов:
Заключение
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Игнорирование файлов (Gitignore) — Введение в Git
В процессе работы над любым проектом в директории с кодом создаются файлы, которые не являются частью исходного кода. Все эти файлы можно условно разделить на несколько групп:
Инструментарий
Временные файлы
Артефакты
Всё это в обычной ситуации не должно попадать в репозиторий. Как правило, эти файлы не несут никакой пользы с точки зрения исходного кода. Они создаются либо автоматически (кеши, логи), либо по запросу (например, скачиваются зависимости или собирается проект). Главная проблема с этими файлами в их постоянном изменении при, как правило, очень больших размерах. Если добавлять их в репозиторий, то практически в каждом коммите, кроме изменений исходного кода, будет и пачка изменений в этих файлах. Читать историю таких коммитов крайне сложно.
Git позволяет гибко настраивать игнорирование определенных файлов и директорий. Делается это с помощью файла .gitignore:
Иногда бывает такое, что программист случайно уже добавил в репозиторий файл, который нужно проигнорировать. В этой ситуации недостаточно обновить правила игнорирования. Дополнительно придется удалить файл или директорию из git с помощью git rm и закоммитить.
Самостоятельная работа
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты.