Git é um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes com velocidade e eficiência. Git se baseia no desenvolvimento distribuído de software, onde mais de um desenvolvedor pode ter acesso ao código-fonte de um aplicativo específico e pode modificar as alterações que podem ser vistas por outros desenvolvedores.

Qualquer projeto Git consistirá em três seções: o diretório Git, a árvore de trabalho e a área de teste. O diretório Git contém o histórico de todos os arquivos e mudanças. A árvore de trabalho contém o estado atual do projeto, incluindo todas as alterações feitas. A área de teste contém as mudanças que foram marcadas para serem incluídas no próximo commit.

Cada arquivo no diretório de trabalho pode estar em um de dois estados:

  • Monitorados
  • Não rastreado

Estado não rastreado

Arquivos não rastreados são quaisquer arquivos no diretório de trabalho que não estavam no último instantâneo e não estão na área de teste. Sempre que um novo arquivo é adicionado ao diretório de trabalho que não existia antes, ele é considerado um arquivo não rastreado. Isso ocorre porque o Git vê isso como um arquivo que não existia no snapshot anterior (commit).
Vamos ver isso com um exemplo, suponha que adicionemos o novo arquivo example.html em nosso repositório e executemos o comando git status para ver o status do arquivo. Ele mostra uma lista de arquivos não rastreados que incluem o arquivo example.html.

Estado rastreado

Arquivos rastreados são arquivos que estavam no último instantâneo. Esses são arquivos que o Git conhece. Cada arquivo de trilha pode estar em um de três subestados: modificado, testado ou confirmado.

Modificado

Um arquivo no estado modificado significa que foram feitas alterações que ainda não foram confirmadas. As alterações podem incluir, modificar ou excluir o conteúdo do arquivo. Esses arquivos serão incluídos no próximo commit, mas serão incluídos em seus respectivos novos formulários.
Vamos modificar nosso arquivo example.html rastreado e executar o comando git status.

Staging

Um arquivo no estado de teste significa que ele não está presente no último commit (por exemplo, arquivos recém-criados) ou é um arquivo “modificado” que o usuário diz ao git para incluir no próximo commit. Os arquivos são adicionados ao estado de teste usando o comando git add. Dois tipos de arquivos podem ser adicionados a um estado de teste: não rastreado ou modificado.
Vamos preparar nosso arquivo example.html não rastreado e executar o comando git status.

Agora, vamos preparar nosso arquivo example.html rastreado modificado e executar o comando git status.

Empenhado

Um arquivo no estado confirmado significa que as alterações feitas nele são armazenadas com segurança em um instantâneo no diretório Git. Um arquivo é confirmado usando o comando git commit. Este comando cria um novo instantâneo no diretório Git e nos mostra algumas estatísticas para a mudança feita.

Vamos confirmar as alterações que fizemos em nosso arquivo example.html.