Игнорировать изменения файлов с помощью 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, а затем выберите "Игнорировать этот локальный элемент" или "Игнорировать это расширение". Эти параметры меню не существуют для отслеживаемых файлов.

Снимок экрана: параметры контекстного меню для измененных файлов в окне изменений Git в Visual Studio.

Параметр "Игнорировать этот локальный элемент " добавляет новую запись в .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 сообщать об изменениях в файле.

Следующие шаги