Игнорировать изменения файлов с помощью Git
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git не должен отслеживать каждый файл в проекте. Временные файлы из среды разработки, выходные данные тестирования и журналы — это все примеры файлов, которые, вероятно, не нужно отслеживать.
Вы можете использовать различные механизмы, чтобы сообщить Git, какие файлы в проекте не отслеживать, и убедиться, что Git не будет сообщать об изменениях этих файлов. Для файлов, которые Git не отслеживает, можно использовать .gitignore
файл или exclude
файл. Для файлов, которые Git отслеживает, можно сообщить Git, чтобы остановить их отслеживание и игнорировать изменения.
Вы узнаете, как выполнять следующие задачи:
- Игнорировать изменения в неуправляемые файлы с помощью
.gitignore
файла. - Игнорировать изменения в неуправляемые файлы с помощью
exclude
файла. - Остановите отслеживание файла и игнорируйте изменения с помощью
git update-index
команды. - Остановите отслеживание файла и игнорируйте изменения с помощью
git rm
команды.
Использование файла .gitignore
Вы можете сообщить Git не отслеживать определенные файлы в проекте, добавив и настроив файл gitignore . Записи в .gitignore
файле применяются только к неуправляемыми файлам. Они не позволяют Git сообщать об изменениях в отслеживаемых файлах. Отслеживаемые файлы — это файлы, зафиксированные и существующие в последнем моментальном снимке Git.
Каждая строка в .gitignore
файле указывает шаблон поиска файлов относительно пути к файлу .gitignore
. Синтаксис .gitignore является гибким и поддерживает использование wild карта s для указания отдельных или нескольких файлов по имени, расширению и пути. Git сопоставляет .gitignore
шаблоны поиска с файлами в проекте, чтобы определить, какие файлы следует игнорировать.
Как правило, файл добавляется в корневую .gitignore
папку проекта. Однако вы можете добавить файл в .gitignore
любую папку проекта, чтобы сообщить Git, какие файлы игнорировать в этой папке и ее вложенных папках в любой вложенной глубине. Для нескольких .gitignore
файлов шаблоны поиска файлов, .gitignore
указанные в папке, имеют приоритет над шаблонами, .gitignore
заданными файлом в родительской папке.
Вы можете вручную создать .gitignore
файл и добавить в него записи шаблона файла. Вы также можете сэкономить время, скачав .gitignore
шаблон для среды разработки из репозитория GitHub gitignore. Одним из преимуществ использования .gitignore
файла является то, что вы можете зафиксировать изменения и поделиться им с другими пользователями.
Примечание.
Visual Studio автоматически создает .gitignore
файл для среды разработки Visual Studio при создании репозитория Git.
Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в Обозреватель решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Обозреватель Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Обозреватель.
В окне изменений Git щелкните правой кнопкой мыши любой измененный файл, который требуется игнорировать Git, а затем выберите "Игнорировать этот локальный элемент" или "Игнорировать это расширение". Эти параметры меню не существуют для отслеживаемых файлов.
Параметр "Игнорировать этот локальный элемент " добавляет новую запись в .gitignore
файл и удаляет выбранный файл из списка измененных файлов.
Параметр "Игнорировать это расширение " добавляет новую запись в .gitignore
файл и удаляет все файлы с тем же расширением, что и выбранный файл из списка измененных файлов.
Любой .gitignore
параметр создает файл, если он еще не существует в корневой папке репозитория, и добавляет в него запись.
Изменение файла Gitignore
Каждая запись в .gitignore
файле — это шаблон поиска файлов, указывающий, какие файлы игнорировать, комментарий, начинающийся с знака номера (#
), или пустая строка (для удобства чтения). Синтаксис .gitignore
гибкий и поддерживает использование wild карта для указания отдельных или нескольких файлов по имени, расширению и пути. Все пути к шаблонам поиска файлов относятся к файлу .gitignore
.
Ниже приведены некоторые примеры распространенных шаблонов поиска файлов:
# Ignore all files with the specified name.
# Scope is all repo folders.
config.json
# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json
# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json
# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile
# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile
# Ignore all files in the 'logs' subfolder.
/logs/
Как только вы измените .gitignore
файл, Git обновляет список файлов, которые он игнорирует.
Примечание.
Пользователи Windows должны использовать косую черту (/
) в качестве разделителя пути в .gitignore
файле вместо использования обратной косой черты (\
). Все пользователи должны добавить конечную косую черту при указании папки.
Использование глобального файла gitignore
Файл можно назначить .gitignore
как глобальный игнорирующий файл, который применяется ко всем локальным репозиториям Git. Для этого используйте следующую git config
команду:
git config core.excludesfile <gitignore file path>
Глобальный .gitignore
файл помогает убедиться, что Git не фиксирует определенные типы файлов, например скомпилированные двоичные файлы, в любом локальном репозитории. Шаблоны поиска файлов в файле, относящемся к репозиторию .gitignore
, имеют приоритет над шаблонами в глобальном .gitignore
файле.
Использование файла исключения
Вы также можете добавить записи для шаблонов exclude
поиска файлов в файл в папке .git/info/
локального репозитория. Файл exclude
позволяет Git знать, какие неподтеченные файлы игнорировать. Он использует тот же синтаксис для шаблонов поиска файлов, что .gitignore
и файл.
Записи в exclude
файле применяются только к неуправляемым файлам. Они не препятствуют Git сообщать об изменениях в зафиксированных файлах, которые он уже отслеживает. Для каждого репозитория существует только один exclude
файл.
Так как Git не фиксирует или отправляет exclude
файл, его можно безопасно использовать, чтобы игнорировать файлы в локальной системе, не затрагивая других пользователей.
Использование git update-index для пропуска изменений
Иногда удобно временно остановить отслеживание локального файла репозитория и игнорировать изменения в файле Git. Например, может потребоваться настроить файл параметров для среды разработки без риска фиксации изменений. Для этого можно выполнить git update-index
команду с флагом skip-worktree
:
git update-index --skip-worktree <file path>
Чтобы возобновить отслеживание, выполните git update-index
команду с флагом --no-skip-worktree
.
Кроме того, вы можете временно остановить отслеживание файла и игнорировать изменения в файле с помощью git update-index
команды с флагом assume-unchanged
. Этот параметр менее эффективенskip-worktree
, чем флаг, так как операция Gitpull
, которая изменяет содержимое файла, может отменить изменения assume-unchanged
флаг.
git update-index --assume-unchanged <file path>
Чтобы возобновить отслеживание, выполните git update-index
команду с флагом --no-assume-unchanged
.
Использование git rm для пропуска изменений
Записи в файле .gitignore
или exclude
файлах не влияют на файлы, которые Git уже отслеживает. Git отслеживает файлы, которые ранее были зафиксированы. Чтобы окончательно удалить файл из моментального снимка Git, чтобы Git больше не отслеживал его, но не удаляя его из файловой системы, выполните следующие команды:
git rm --cached <file path>
git commit <some message>
Затем используйте .gitignore
запись или exclude
запись файла, чтобы запретить Git сообщать об изменениях в файле.