Ignorar alterações de arquivo com o Git

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

O Git não deve rastrear todos os arquivos em seu projeto. Arquivos temporários do seu ambiente de desenvolvimento, saídas de teste e logs são exemplos de arquivos que provavelmente não precisam ser rastreados.

Você pode usar vários mecanismos para informar ao Git quais arquivos em seu projeto não devem ser rastreados e para garantir que o Git não relate alterações nesses arquivos. Para arquivos que o Git não rastreia, você pode usar um arquivo .gitignore ou exclude. Para arquivos que o Git rastreia, você pode dizer ao Git para parar de rastreá-los e ignorar as alterações.

Neste artigo, você aprenderá a:

  • Ignorar alterações em arquivos não rastreados usando um arquivo .gitignore.
  • Ignorar alterações para arquivos não rastreados usando um arquivo exclude.
  • Pare de controlar um arquivo e ignore as alterações usando o comando git update-index.
  • Pare de controlar um arquivo e ignore as alterações usando o comando git rm.

Use um arquivo .gitignore

Você pode dizer ao Git para não rastrear determinados arquivos em seu projeto adicionando e configurando um arquivo . gitignore . As entradas em um .gitignore arquivo se aplicam somente a arquivos não rastreados. Eles não impedem que o Git relate alterações em arquivos rastreados. Arquivos rastreados são arquivos que foram confirmados e existem no último instantâneo do Git.

Cada linha em um arquivo .gitignore especifica um padrão de pesquisa do arquivo em relação ao caminho do arquivo .gitignore. A sintaxe . gitignore é flexível e oferece suporte ao uso de curingas para especificar arquivos individuais ou múltiplos por nome, extensão e caminho. O Git corresponde aos padrões de pesquisa .gitignore com os arquivos em seu projeto para determinar quais arquivos ignorar.

Normalmente, você adiciona um .gitignore arquivo à pasta raiz do seu projeto. No entanto, você pode adicionar um arquivo .gitignore a qualquer pasta de projeto para informar ao Git quais arquivos ignorar dentro dessa pasta e suas subpastas em qualquer profundidade aninhada. Para vários .gitignore arquivos, os padrões de pesquisa de arquivo que um arquivo especifica dentro de uma pasta têm precedência sobre os padrões que um arquivo .gitignore .gitignore especifica dentro de uma pasta pai.

Você pode criar manualmente um .gitignore arquivo e adicionar entradas de padrão de arquivo a ele. Ou você pode economizar tempo baixando um .gitignore modelo para seu ambiente de desenvolvimento a partir do Repositório do Gitignore do GitHub . Um dos benefícios de usar um arquivo .gitignore é que você pode confirmar alterações e compartilhá-las com outras pessoas.

Observação

O Visual Studio cria automaticamente um arquivo para o ambiente de desenvolvimento do Visual Studio quando você .gitignore cria um Repositório do Git.

O Visual Studio 2022 fornece uma experiência de controle de versão do Git por meio do menu Git, alterações do Git e menus de atalho no Gerenciador de Soluções . O Visual Studio 2019, versão 16.8, também oferece a interface do usuário do Git do Team Explorer. Para saber mais, consulte a guia Visual Studio 2019 - Team Explorer.

Na janela Alterações do Git, clique com o botão direito do mouse em qualquer arquivo alterado que você deseja que o Git ignore e selecione Ignorar este item local ou Ignorar esta extensão . Essas opções de menu não existem para arquivos rastreados.

Captura de tela das opções de menu de contexto para arquivos alterados na janela Alterações do Git no Visual Studio.

A opção Ignorar este item local adiciona uma nova entrada ao arquivo .gitignore e remove o arquivo selecionado da lista de arquivos alterados.

A opção Ignorar esta extensão adiciona uma nova entrada ao arquivo e remove todos os arquivos com a mesma extensão .gitignore que o arquivo selecionado da lista de arquivos alterados.

Qualquer opção criará um arquivo .gitignore se ele ainda não existir na pasta raiz do repositório e adicionará uma entrada a ele.

Editar um arquivo gitignore

Cada entrada no .gitignore arquivo é: um padrão de pesquisa de arquivo que especifica quais arquivos ignorar, um comentário que começa com um sinal numérico () ou uma linha em branco (#para facilitar a leitura). A sintaxe .gitignore é flexível e dá suporte ao uso de curingas para especificar arquivos individuais ou múltiplos por nome, extensão e caminho. Todos os caminhos para padrões de pesquisa de arquivo são relativos ao .gitignore arquivo.

Aqui estão alguns exemplos de padrões comuns de pesquisa do arquivo:

# 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/

Assim que você modifica um arquivo .gitignore, o Git atualiza a lista de arquivos que ele ignora.

Observação

Os usuários do Windows devem usar uma barra () como um separador de caminho em um arquivo/, em vez de usar uma barra invertida ( .gitignore \). Todos os usuários devem adicionar uma barra à direita ao especificar uma pasta.

Use um arquivo global gitignore

Você pode designar um arquivo .gitignore como um arquivo global para ignorar que se aplica a todos os repositórios locais do Git. Para fazer isso, use o comando git config da seguinte maneira:

git config core.excludesfile <gitignore file path>

Um arquivo global .gitignore ajuda a garantir que o Git não confirme determinados tipos de arquivo, como binários compilados, em qualquer repositório local. Os padrões de pesquisa do arquivo em um arquivo .gitignore específico do repositório têm precedência sobre padrões em um arquivo global .gitignore.

Usar um arquivo de exclusão

Você também pode adicionar entradas para padrões de pesquisa de arquivo ao arquivo exclude na .git/info/ pasta do repositório local. O arquivo exclude permite que o Git saiba quais arquivos não rastreados devem ser ignorados. Ele usa a mesma sintaxe para padrões de pesquisa de arquivo como um arquivo .gitignore.

As entradas em um arquivo exclude se aplicam somente a arquivos não rastreados. Eles não impedem que o Git relate alterações em arquivos confirmados que ele já rastreia. Existe apenas um arquivo exclude por repositório.

Como o Git não confirma ou envia o exclude arquivo por push, você pode usá-lo com segurança para ignorar arquivos em seu sistema local sem afetar ninguém.

Use o índice de atualização do Git para ignorar alterações

Às vezes, é conveniente parar temporariamente de rastrear um arquivo de repositório local e fazer com que o Git ignore as alterações no arquivo. Por exemplo, talvez você queira personalizar um arquivo de configurações para seu ambiente de desenvolvimento sem o risco de confirmar suas alterações. Para fazer isso, você pode executar o comando git update-index com o sinalizador skip-worktree:

git update-index --skip-worktree <file path>

Para retomar o acompanhamento, execute o comando git update-index com o sinalizador --no-skip-worktree.

Ou você pode parar temporariamente de rastrear um arquivo e fazer com que o Git ignore as alterações no arquivo usando o comando git update-index com o sinalizador assume-unchanged. Essa opção é menos eficaz do que o sinalizador, porque uma operação do Git skip-worktree que altera o conteúdo do arquivo pode reverter o pull assume-unchanged sinalizador.

git update-index --assume-unchanged <file path>

Para retomar o acompanhamento, execute o comando git update-index com o sinalizador --no-assume-unchanged.

Usar o Git rm para ignorar alterações

As entradas em um arquivo .gitignore ou exclude não têm nenhum efeito sobre os arquivos que o Git já rastreia. O Git rastreia arquivos que você confirmou anteriormente. Para remover permanentemente um arquivo do instantâneo do Git para que o Git não o rastreie mais, mas sem excluí-lo do sistema de arquivos, execute os seguintes comandos:

git rm --cached <file path>
git commit <some message>

Em seguida, use uma entrada de arquivo .gitignore ou exclude para impedir que o Git reporte alterações ao arquivo.

Próximas etapas