DEV Community

Cover image for Arquitetura e Estados -Parte 1
Rodrigo Ferraz
Rodrigo Ferraz

Posted on • Updated on

Arquitetura e Estados -Parte 1

Antes de mais nada, todo esse guia é baseado no livro "Pro Git"(incluindo a fonte das imagens) que pode ser baixado na versão PDF aqui e na versão EPUB aqui. O livro é GRATUITO, então se você sabe inglês e quer se aprofundar mais esse é o caminho.

Arquitetura e Funcionamento

O Git é um VCS(Version Control System) utilizado amplamente para o processo de desenvolvimento de software. As ferramentas VCS registram as mudanças em um conjunto de arquivos e são responsáveis principalmente pela edição de arquivos por mais de uma pessoa "ao mesmo tempo", além disso também vem com ferramentas para resolver conflitos de versões e outras mais.

De maneira bem simplória o Git é uma espécie de Google Drive com versionamento. Diferente de outros VCS de mercado o Git trabalha com o arquivo completo para cada versão diferente criada ao longo do tempo, já os outros trabalham salvando apenas as alterações(também chamada de delta) dos arquivos alterados.

VCS que usam o delta:
deltas

Git:
snapshots

Sempre que um commit(ou "Salvamento do estado", bem feio rsrs) do projeto é feito o Git cria uma snapshot do estado atual de todos os arquivos e grava uma referência desse estado(uma espécie de ID). Se um arquivo tem uma alteração, a cópia é feita, senão, ele não grava novamente o arquivo, ele simplesmente faz uma referência(link) para o arquivo do commit anterior.

Estado dos arquivos

O ciclo de vida dos arquivos no Git são 3:

  • Modified - Os arquivos foram alterados mas as mudanças não foram confirmadas;
  • Staged - Mudanças foram confirmadas para estar no próximo commit;
  • Commited - Dados estão salvos na base local.

Outro ponto importante são as seções de um projeto:

  • Working Directory - Representa uma versão das muitas que um projeto pode ter. Os arquivos são descompactados da base de dados do Git e são colocados no disco para você usar;
  • Staging Area - É simplesmente um arquivo dentro do diretório do Git que contém as informações de modificações que serão incluídas no próximo commit, uma espécie de índice;
  • Repository/Git Directory - Local onde o Git guarda os metadados e base do projeto. Essa é a parte mais importante e é o que é copiado quando clonamos um repositório.

seções do projeto

Basicamente o Workflow fica assim(observando a imagem acima):

  1. Você esta no seu Working tree e faz alterações em alguns arquivos do seu código;
  2. Você escolhe quais dessas mudanças farão parte do commit e adiciona elas a Staging Area;
  3. Você faz o commit, que tira uma snapshot dos arquivos da maneira que eles estão na sua Staging Area e os armazena permanentemente ao seu Git Directory.

Depois disso o fluxo se reinicia, com você fazendo novas alterações, escolhendo quais vai commitar e de fato fazendo o commit.

Por enquanto é isso nos vemos na próxima!

Top comments (0)