[Tutorial Git] git rm/reset: Removendo arquivos do index (staging area)
Tags: git, rm, braziliandevs, github
Published: 2020-02-22 20:53:02

## Remoção antes do primeiro commit

Temos no nosso diretório que está sendo monitorado pelo **Git** os seguintes arquivos:

![arquivos monitorados](https://dev-to-uploads.s3.amazonaws.com/i/kvc6zywtczvjsq7hve48.png)

No **fluxo** do git, temos:

![arquivos no index](https://dev-to-uploads.s3.amazonaws.com/i/99qml5r7evd5p738mnfk.png)

Como podemos ver, ainda não temos **commits**.

Vamos criar e adicionar ao **index** um terceiro arquivo:

![criando e adicionando terceiro arquivo](https://dev-to-uploads.s3.amazonaws.com/i/49lnebjh3ymzkmnvl8mr.gif)

Observando o fluxo do **Git**:

![novo arquivo no index](https://dev-to-uploads.s3.amazonaws.com/i/34ku8t6jxqzbqd2nsaet.png)

Vamos supor que adicionamos esse arquivo estilo2.css sem querer. **Não era o que queríamos**. Então devemos **tirá-lo do index**. Observe que o próprio terminal nos dá uma dica de como fazê-lo:

![retorno do git status](https://dev-to-uploads.s3.amazonaws.com/i/s8rxi66yofcc5bhz25h9.png)

Esse é exatamente o comando que vamos utilizar aqui.

```
$ git rm --cached estilo2.css
```

- **$** indica que você deve usar o **usuário comum** para fazer essa operação.

Utilizando o comando ```git status```, temos:

![arquivo retirado do index](https://dev-to-uploads.s3.amazonaws.com/i/vq1nenbry48pgrs9hqbi.png)

No fluxo do **Git**, temos:

![arquivo removido do index](https://dev-to-uploads.s3.amazonaws.com/i/5yj8vs79m5c7sndu8rhl.png)

Para retirar todos os arquivos, podemos usar o comando

```
$ git rm --cached -r *
```

- **-r** de recursivo, ou seja, inclui subdiretórios, se houver.

- __*__, asterisco; todos os arquivos.


## Remoção após o primeiro commit

Caso não seja o primeiro commit e você precise excluir um arquivo do **index**, utilize o comando:

```
$ git reset HEAD <arquivo>
```

- **reset**; redefinir.

- **HEAD** é um ponteiro que normalmente aponta para o **último commit**.

- digite o nome do arquivo sem os sinais **< >**.

O que esse comando faz é uma cópia do **head** para o **index**; retirando o arquivo que estava no index antes.

No nosso exemplo,

![index a partir do segundo commit](https://dev-to-uploads.s3.amazonaws.com/i/5jx21ifobg36vfyqt1vz.png)

![fluxo antes da remoção do arquivo do index](https://dev-to-uploads.s3.amazonaws.com/i/zdif6sn93jww4evye7cz.png)

Usando o comando

```
$ git reset HEAD estilo2.css
```

![depois do reset HEAD](https://dev-to-uploads.s3.amazonaws.com/i/n0k8wbr60lsdgohj9u2p.png)

Para **retirar do index todos os arquivos**, digite:

```
$ git reset HEAD .
```

- **ponto** é o diretório atual. Isso quer dizer que ele vai incluir todos os arquivos e subdiretórios que estão no **index**.

Exemplo:

Adicionando dois arquivos ao index.

![criando dois arquivos e adicionando ao index](https://dev-to-uploads.s3.amazonaws.com/i/02d5wlcf7jhg9zhln0r2.gif)

Mostrando os três arquivos que estão agora no index.

![mais de um arquivo no index](https://dev-to-uploads.s3.amazonaws.com/i/plsdsl0fcp5ac5yjsym2.png)

Retirando todos os arquivos que estão no index.

![reset head em mais de um arquivos](https://dev-to-uploads.s3.amazonaws.com/i/aphnh7t3ze4svqaeugq2.png)