> For the complete documentation index, see [llms.txt](https://cumbucadev.gitbook.io/github-essentials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cumbucadev.gitbook.io/github-essentials/dia-4/ignorando-e-removendo-arquivos-do-rastreamento-local/ignorando-arquivos-do-rastreamento-utilizando-o-arquivo-.gitignore.md).

# Ignorando Arquivos do Rastreamento Utilizando o arquivo .gitignore

## Como Funciona

É muito comum, você pode ter arquivos que não deseja rastrear no controle de versão do Git. Isso inclui tipos específicos de arquivos que são criados durante o desenvolvimento de software ou que contêm informações sensíveis.

Por exemplo, durante a compilação de um programa, podem ser gerados arquivos executáveis (.exe no Windows) ou arquivos intermediários que são necessários apenas temporariamente. Esses arquivos não são essenciais para o controle de versão do seu projeto e podem ocupar espaço desnecessário no repositório Git.

Além disso, ferramentas e programas frequentemente criam arquivos temporários, como aqueles com extensões .tmp ou .temp, para armazenar informações transitórias que não precisam ser preservadas no histórico de versão.

Por fim, é crucial evitar incluir no controle de versão arquivos que contenham informações sensíveis, como senhas, chaves de API, tokens de acesso ou outros dados confidenciais. Esses arquivos podem comprometer a segurança do seu projeto se forem acessíveis a outras pessoas.

Para ignorar esses arquivos, você precisa criar um arquivo chamado `.gitignore` no diretório raiz do seu projeto e listar nele os nomes dos arquivos e diretórios que deseja ignorar, um por linha. Em seguida, adicione e faça o commit do arquivo para que ele funcione corretamente.

Quando você adiciona um arquivo ou diretório ao `.gitignore`, o Git não rastreará mais as alterações nesses arquivos. Isso significa que eles não serão exibidos como "untracked" quando você executar <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark>, e você não será solicitado a adicioná-los ao commit.

Com isso, um arquivo podem estar em um de três estados (agora adicionando o estado `ignored`):

1. **tracked** (rastreado): um arquivo que já foi preparado ou confirmado;
2. **untracked** (não rastreado): um arquivo que não foi preparado nem confirmado; ou
3. **ignored** (ignorado): um arquivo que o Git foi forçado a ignorar.

## Estrutura

### **Ignorar arquivos específicos:**

```
arquivo.txt
diretorio/arquivo2.txt
```

Isso ignora:\
\- o arquivo `arquivo.txt` e\
\- o arquivo `arquivo2.txt` dentro do diretório `diretorio`.

### **Ignorar todos os arquivos em um diretório:**

```
diretorio/*
```

Isso ignora todos os arquivos dentro do diretório `diretorio`, mas não o diretório em si. Subdiretórios dentro de `diretorio` não serão ignorados, por exemplo.

### **Ignorar arquivos com uma extensão específica:**

```
*.log
```

Isso ignora todos os arquivos com a extensão `.log`.

### **Ignorar arquivos em todos os diretórios com um nome específico:**

```
*/arquivo.log
```

Isso ignora todos os arquivos chamados `arquivo.log` em qualquer subdiretório.

### **Ignorar um diretório inteiro:**

```
diretorio/
```

Isso ignora completamente o diretório chamado `diretorio`, incluindo todos os arquivos e subdiretórios dentro dele.

Esses são apenas alguns exemplos básicos de como estruturar um arquivo `.gitignore`. Você pode adicionar mais linhas conforme necessário para personalizar quais arquivos e diretórios deseja ignorar no seu repositório Git.

## Exemplo de Uso

### **Verificar os arquivos a serem ignorados:**

Antes de criar o arquivo `.gitignore`, é útil verificar quais arquivos estão atualmente listados no <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark> e que você deseja ignorar posteriormente. Por exemplo, se você tem arquivos de compilação com a extensão `.exe` e arquivos temporários com a extensão `.tmp` que deseja ignorar, execute <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark> para ver se esses arquivos estão listados como modificados ou não rastreados.\
O output do <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark> pode mostrar algo semelhante a:

```perl
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	arquivo1.exe
	arquivo2.tmp

nothing added to commit but untracked files present (use "git add" to track)
```

Isso mostra que os arquivos `arquivo1.exe` e `arquivo2.tmp` estão atualmente untracked. Para que eles não apareçam mais e sejam desconsiderados, você precisa ignorá-los.

### **Criar o arquivo .gitignore**

Você abre o seu editor de texto preferido e cria um novo arquivo chamado `.gitignore`.

### **Listar os arquivos a serem ignorados**

No arquivo .gitignore, lista os nomes dos arquivos e diretórios que você deseja ignorar, um por linha.\
Por exemplo, você quer ignorar todos os arquivos de compilação com a extensão .exe e todos os arquivos temporários com a extensão .tmp. O arquivo .gitignore ficaria assim:

```sh
*.exe
*.tmp
```

### **Salvar o arquivo**

Após adicionar as regras de ignorar ao arquivo `.gitignore`, você salva o arquivo.

### **Verificar o Status do Repositório**

Você usa <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark> para ver que agora apenas o arquivo `.gitignore` aparece como untracked. Os arquivos `arquivo1.exe` e `arquivo2` já não aparecem mais.

```sh
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.gitignore

nothing added to commit but untracked files present (use "git add" to track)

```

### **Adicionar o arquivo .gitignore:**

Agora, para salvar as mudanças, adicione o arquivo `.gitignore` ao controle de versão do Git usando o comando <mark style="color:purple;">git</mark> <mark style="color:orange;">add</mark> <mark style="color:green;">.gitignore</mark>.

### **Fazer commit do arquivo .gitignore**

Faça o commit com a mensagem apropriada, como <mark style="color:purple;">git</mark> <mark style="color:orange;">commit</mark> <mark style="color:blue;">-m "Adicionar arquivo .gitignore".</mark>

### **Verificar se está funcionando**

Por fim, verifique se o Git está ignorando os arquivos listados no `.gitignore` executando <mark style="color:purple;">git</mark> <mark style="color:orange;">status</mark>. Você não deve mais ver esses arquivos na lista de arquivos a serem commitados.\
O output esperado do `git status` deve mostrar algo semelhante a:

```sh
On branch main
nothing to commit, working tree clean
```

Isso indica que não há alterações pendentes para commit e que os arquivos listados no `.gitignore` estão sendo ignorados pelo Git.

Ao executar <mark style="color:purple;">git</mark> <mark style="color:orange;">log</mark>, o output deve ser algo parecido com isso:

```sh
commit 59430c481a8f4429436dfcd5700ddd373ad77fe9
Author: Cumbuca Dev <cumbucadev@gmail.com>
Date:   Wed Jun 12 22:29:35 2024 +0200

    Adicionar arquivo .gitignore
```

## **Recomendações**

### [gitignore.io](https://gitignore.io/)

Para facilitar a criação de um arquivo `.gitignore` adequado ao seu projeto, recomendamos o uso da ferramenta online [gitignore.io](https://gitignore.io/). Ela permite que você selecione rapidamente as linguagens de programação, frameworks, ambientes de desenvolvimento e outras especificações do seu projeto, gerando automaticamente um arquivo `.gitignore` personalizado.

#### Como a ferramenta funciona

1. **Digitar na Área de Texto:** Acesse a ferramenta e digite na área de texto as tecnologias que está usando no seu projeto (ex: python, linux, Visual Studio Code). Conforme você digita, a ferramenta sugere opções relevantes para você selecionar.
2. **Geração Automática:** Após selecionar as opções relevantes, a ferramenta gera automaticamente um arquivo `.gitignore` contendo regras apropriadas para ignorar arquivos específicos dessas tecnologias.
3. **Download:** Você pode então baixar o arquivo `.gitignore` gerado e adicioná-lo ao diretório raiz do seu projeto.

### [github.com/github/gitignore](https://github.com/github/gitignore)

Outra opção também é utilizar como base o repositório de arquivos `.gitignore` do GitHub, acessível em [github.com/github/gitignore](https://github.com/github/gitignore).

Visite o repositório e explore os diferentes arquivos `.gitignore` disponíveis para várias linguagens de programação, *frameworks* e ferramentas. Escolha o arquivo `.gitignore` que melhor se adequa ao seu projeto. Você pode copiar o conteúdo do arquivo selecionado e personalizá-lo conforme necessário para atender às especificidades do seu projeto. Adicione o arquivo `.gitignore` ao diretório raiz do seu projeto.

{% hint style="warning" %}
Esta é uma explicação simplificada para fins didáticos. Para explorar todas as possibilidades do arquivo `.gitignore`, consulte a [documentação oficial](https://git-scm.com/docs/gitignore).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cumbucadev.gitbook.io/github-essentials/dia-4/ignorando-e-removendo-arquivos-do-rastreamento-local/ignorando-arquivos-do-rastreamento-utilizando-o-arquivo-.gitignore.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
