Article image
MÁRCIO SILVA
MÁRCIO SILVA28/03/2023 13:38
Compartilhe

Conceitos sobre controle de versão

  • #GitHub
  • #Git
  • Version Control System (VCS – Sistema de Controle de Versão) é um programa que gerencia o histórico das diferentes versões e estados de um arquivo durante sua jornada.
  • Git é um sistema de controle de versão do tipo distribuído.

image

Bem, num sistema de controle de versão centralizado, existe um único servidor central que faz a hospedagem do desenvolvimento. Então todas as páginas, tudo que está acontecendo naquele projeto fica neste servidor, e as pessoas que são os colaboradores, simulados (na figura) por computador A e computador B, os 2 programadores conseguem interagir com o servidor central, enviando arquivos para este servidor. Ou seja, eles fazem as suas modificações em determinados arquivos e enviam as suas modificações para o servidor central, onde o servidor tem um administrador que fará um trabalho de checagem, mescla e autorização, para que esses códigos sejam implementados no projeto. Nesse modelo, esses programadores do computador A e computador b não tem as cópias do projeto com eles, então a experiência mostrou que esse tipo de controle não é tão produtivo quanto um controle de versão distribuído, porque um exemplo simples é que se esse servidor ficar inoperante os programadores não vão conseguir fazer implementações nessa base, então quer dizer, eles ficariam ociosos enquanto aguardariam o servidor voltar as suas atividades.

image

O sistema de modelo distribuído é bem diferente, então observe na ilustração (figura), o programador que está no computador A, tem um arquivo que ele está desenvolvendo e modificando, ele também tem visão das últimas versões desse arquivo, porque ele tem o projeto todo na máquina dele. Da mesma maneira, quem está no computador B, ou seja, o outro programador, está trabalhando num arquivo, pode ser até o mesmo arquivo do programador do computador A, então o computador A e o computador B (na figura), representam máquinas de programadores e desenvolvedores diferentes, tanto o computador A quanto o computador B podem estar trabalhando em arquivos diferentes ou até no mesmo arquivo. Eles podem enviar os seus arquivos para o servidor, que não é central, é distribuído. E o servidor então recebe esses arquivos com as modificações e faz na sequência (caso o administrador execute) a mesclagem desse arquivo que chegou com aquele que já estava no servidor. Isso pode acontecer a qualquer momento, a mescla pode acontecer no servidor, a mescla pode acontecer no computador local, mas o que é muito interessante, é que todos têm uma visão completa do projeto, e para que você possa fazer um download, você traz uma versão do arquivo 3 e a versão 3 do arquivo deve ser atualizada na sua máquina, se você fez uma alteração no arquivo dessa versão 3 e você tentar subir essa alteração, ele identificará se já existe lá no servidor uma versão atual, que não é a mesma que a sua e de repente, por exemplo, o desenvolvedor do computador B enviou um arquivo, o mesmo arquivo que o seu, um pouco antes, um dia antes, horas antes de você. Então se você for fazer o envio do teu arquivo, ele não permitirá, ele pedirá para você atualizar teu projeto para depois poder enviar as suas modificações. Logo, no modelo de controle Distribuído, todos têm visão de tudo. Todos têm o projeto atualizado a todo momento.

image

Então aqui (figura acima), a gente tem uma visão de como funciona o histórico de versões. Temos arquivos A, B e C, o que acontece com o GIT, é que ele verifica os status de cada versão, então, por exemplo, no primeiro momento, após subirmos a versão original (sem alterações), então vem a primeira versão, perceba que o arquivo A ele não teve alteração, só B e C. Então, no primeiro status de uma versão global do projeto temos alterações apenas desses 2 arquivos B e C, já na versão 2, no status geral, temos modificações só do A e do B. O controle de versão vai trabalhando em status momentâneos, como se fosse uma fotografia de um determinado momento em que aconteceu algo. E aí ele vai guardando todos esses status, todas essas versões, não só de um específico arquivo, mais de tudo o que aconteceu quando subirmos um Arquivo X, e como estava o status dos outros arquivos.

image

image

image

Compartilhe
Comentários (6)
Daniel Santos
Daniel Santos - 28/03/2023 14:40

Boa!!

Nelson Santos
Nelson Santos - 28/03/2023 14:19

Muito obrigado, vai ajudar bastante quem está começando. Fiz o curso de git aqui na Dio e também quando tive acesso pela empresa que trabalhei no curso da Alura. Agora vou aprender os conceitos mais avançados em breve, mas só depois que terminar o Bootcamp do iFood.


“Que a força esteja com todos nós”. ;)

Luiz Café
Luiz Café - 28/03/2023 14:15

Parabéns pelo artigo Márcio. Acredito que entender sobre Git e Github são ótimos caminhos para iniciar na carreira de Desenvolvimento.

Thatiana Moreira
Thatiana Moreira - 28/03/2023 14:04

Obrigada! Excelente artigo!

Márcio Silva
Márcio Silva - 28/03/2023 13:49

Valeu Wallace Costa, git e github são ferramentas imprescindíveis no dia a dia das equipes nas empresas.

Wallace Costa
Wallace Costa - 28/03/2023 13:42

Ótimo artigo Márcio.