# Entendendo os Estágios do GIT

> Apesar de o GIT fazer parte na maioria dos projetos do mundo, percebo que alguns conceitos não são tão comuns a certas pessoas e, as vezes, pra mim...

- URL: https://iagofrota.com.br/blog/entendendo-os-estagios-do-git/
- Data: 2020-05-19
- Tags: deploy, dev, estagios-do-git, git

Apesar de o GIT fazer parte na maioria dos projetos do mundo, percebo que alguns conceitos não são tão comuns a certas pessoas e, as vezes, pra mim também.

Por muito tempo, eu sinceramente não entendia como as coisas funcionavam, de fato, no GIT. Utilizava certos comandos, mas não entendia o que realmente estava acontecendo.

Portanto, com este artigo, espero mostrar alguns conceitos que me ajudaram a entender melhor o GIT e dicas que eu aprendi. Tenho a intenção de ser breve e não aprofundar muito o tema.

### Introdução

![Logo do GIT](https://cdn-images-1.medium.com/max/800/1*NZw05fnJfhj4AHyUHT_3QQ.png)

O GIT é um sistema de controle de versão mais popular que temos. Ele é usado, principalmente, para gerenciamento de código no desenvolvimento de _software_.

Ele foi criado, inicialmente por [Linus Torvalds](https://pt.wikipedia.org/wiki/Linus_Torvalds) para o desenvolvimento do Kernel do Linux.

Não custa nada lembrar, mas o GIT não é o Github. O GIT é sistema de controle de versão e o Github é um serviço de hospedagem de repositórios GIT. Tá ok?

### Entendendo os Estágios

#### _working directory_ (diretório de trabalho)

> Remember that each file in your working directory can be in one of two states: tracked or untracked.
> 
> [2.2 Git Basics — Recording Changes to the Repository](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)

Todos os arquivos que estão no diretório de trabalho, eles podem ter dois estado: `tracked` e `untracked`. Guarde essa informação.

Todos os arquivos que foram adicionados, modificados e excluídos, ficarão nesse estágio. Resumindo, todos os arquivos que você está trabalhando no momento estão aqui.

Executando o comando `git status`, você deverá ver algo parecido, caso haja alguma adição, modificação ou exclusão de arquivos

![Listagem dos arquivo marcados como modified](https://cdn-images-1.medium.com/max/800/1*aLtFkyxX9tZRpZYdKe15tw.jpeg)

Pela imagem você pode ver que, neste exemplo, os arquivos que foram alterados, foram marcado como **_modified_**. Tente adicionar e excluir arquivos dentro do repositório e execute o comando `git status` para ver o resultado.

#### preparação (_staging area_)

Nesta área, você já deve ter executado o comando `git add nome-do-arquivo`. O GIT já está rastreando o seu arquivo e, também foi elegido para ser _comitado._ Caso tenha interesse em eleger todos os arquivos do diretório de trabalho, digite o comando `git add .`.

Se você digitar o comando `git status` , deverá ver algo parecido com isso

![Listagem dos arquivo na staging area](https://cdn-images-1.medium.com/max/800/1*aVX38LnlJheiOPeEGwUVsQ.png)

#### repositório (_repository_)

Essa área é onde todos os seus arquivos confirmados ou _comitados_ estão. Para _comitar_ os arquivos que estão na _staging area_, você executa o comando

```
git commit -m "Frase explicativa e sucinta do que está comitando"
```

Após fazer o _commit_, sua _staging area_ ficará vazia

![](https://cdn-images-1.medium.com/max/800/1*AGF1F8CnYi2Ajg3mfV9lng.png)

### Conclusão

Enfim, espero que eu tenha sido claro sobre o assunto e espero que tenha seja útil daqui pra frente. Acho que até aqui, você deve ter percebido que o GIT é um mundo. Existem muitos outros conceitos e técnicas ainda para aprender.

Sugiro você ler este artigo que eu também fiz. Acredito que irá ser muito útil!

[Deploy utilizando git bare](https://medium.com/@iagofrota/deploy-utilizando-git-bare-a6f348e3be0c)
