Introdução Sobre controle de versão
Tags: git
Published: 2022-01-27 21:55:09

Este é o primeiro capítulo da ferramenta git. Começaremos com informações básicas sobre controle de versão, depois passaremos para como fazer rodar o git em seu sistema, logo depois, como configurar e começar a trabalhar com essa ferramenta que é essencial na vida dos programadores. No final dessa serie de artigos você devera ser capaz de entender por que git existe, porque deve usar e estar preparado para usa-lo.




## Sobre o controle de versão 

O que você acredita ser controle de versão ? você acha que deve ser importante? Mas afinal... o que é controle de versão ?
O controle de versão é um sistema que registra  arquivos ou conjunto de arquivos ao longo do tempo para que você possa recuperar versões anteriores do seu arquivo ou projeto posteriormente.

Se você deseja manter versões de uma imagem ou código, o sistema de controle de versão (VCS) é o mais apropriado para isso.
Com ele você pode reverter arquivos que não eram para alterar e recuperar para seu estado anterior, comparar alterações ao longo do tempo, ver quem modificou a ultima vez algo que estar causando problema, quem inseriu um problema no código ou solução também e muito mais.

E usando um VCS significa que caso você estrague o projeto, com apenas um comando já retornara ao estado anterior e funcionando.



## Sistema de controle de versão local

O método de controle de versão preferido de muitas pessoas é de copiar arquivos para outro diretório, ou seja apenas copiar toda a pasta e ter 2 arquivos. Essa forma de versionar é muito simples e comum, contudo fácil e propenso a erros. Por que é fácil esquecer o diretório original e assim gravar o projeto em outra pasta.

Para lidar com esse tipo de problema, programadores há anos atrás desenvolveram VCSs locais que tinham um banco de dados simples que guardavam as alterações em arquivos sob controle de versão




![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t6p1wkq8n108hb7c76ep.png)



Naquele momento foi muito popular a ferramenta VCS chamada RCS, hoje ainda é distribuído em muitos computadores. O RCS funciona mantendo Patches, de modo geral, as diferenças de arquivos em um formato de disco.



## Sistemas de controle de versão Centralizados


O problema que encontraram é que as pessoas precisam colaborar com desenvolvedores em outros sistemas. Com isso, foi desenvolvido Sistemas de Controle de Versão Centralizados(CVSs). Eles como os (CVS) tem um único servidor quem contem todos os arquivos, com versão de vários clientes, e sim, ele foi usado durante anos como versionador.

Abaixo a figura ilustra o funcionamento : 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/45oop4rq5x0quxkcb5m6.png)


As Vantagens são que todos sabem até certo ponto o que todos no projeto estão fazendo. Os administradores tem controle sobre tudo, ou seja, quem pode fazer o que, e o que era mais fácil de lidar com esse tipo de trabalho.


<u>Pontos negativos:</u>

Suponhamos que o servidor fique inativo no período de 2 horas, dentro desse tempo você não pode colaborar ou salvar alterações no projeto. Caso o disco rígido seja corrompido, todas as alterações serão perdidas, absolutamente tudo no projeto será perdido, salvo aquelas que estão na maquina local de cada colaborador


## Sistemas distribuídos de controle de versão

Aqui falamos sobre os sistemas de controle de versão distribuidos(DVCSs). Em um DVCS(git, Darcs ou Mercurial), os clientes verificam não somente a ultima alteração de versionamento, mas sim como o todo histórico do projeto, e partes anteriores tendo o histórico completo. E caso algum servidor morrer e os sistemas estiver colaborando por meio desse servidor, Pode ser facilmente recuperado e copiado de volta para o servidor. Cada clone é um backup completo dos dados



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pctov45dxi4dthcp48t8.png)