Como o Git Funciona? Entendendo o Controle de Versão

Tempo de leitura: 4 min

Escrito por blackzig
em 26/06/2026

Imagine que você está escrevendo um livro no Microsoft Word.

Você cria um arquivo chamado:

livro.docx

Depois de algumas alterações, com medo de perder o trabalho, cria outro arquivo:

livro_final.docx

Mais tarde:

livro_final_agora_vai.docx

Depois:

livro_final_agora_vai_2.docx

E finalmente:

livro_final_definitivo_versao_certa.docx

Parece engraçado, mas praticamente todo mundo já fez isso.

O Git surgiu justamente para acabar com esse problema.

Em vez de criar dezenas de arquivos diferentes, o Git guarda o histórico completo de todas as alterações realizadas.

Você trabalha sempre no mesmo projeto e pode voltar para qualquer momento da sua história.


O que o Git registra?

O Git registra praticamente tudo:

  • arquivos criados;
  • arquivos removidos;
  • alterações em linhas específicas;
  • quem fez a alteração;
  • quando ela foi realizada;
  • qual era o conteúdo anterior;
  • qual é o conteúdo atual.

Isso significa que você nunca mais precisa ter medo de perder uma alteração importante.


Exemplo prático

Imagine um arquivo chamado:

calculadora.java

Primeira versão:

public class Calculadora {

}

Você salva um commit.

Mais tarde adiciona:

public class Calculadora {

    public int somar(int a, int b){
        return a+b;
    }

}

Novo commit.

Depois adiciona:

public int subtrair(int a,int b){
    return a-b;
}

Novo commit.

Alguns dias depois percebe que a função de subtração introduziu um erro.

Sem Git seria complicado recuperar.

Com Git basta voltar ao commit anterior.

Tudo continua salvo.


O que é um Commit?

O commit é uma das partes mais importantes do Git.

Imagine que você está jogando um videogame.

Sempre que encontra um ponto importante, salva o jogo.

Depois pode retornar exatamente para aquele momento.

O commit funciona exatamente assim.

Ele cria um ponto de restauração do projeto.

Cada commit possui:

  • um identificador único;
  • data;
  • horário;
  • autor;
  • descrição.

Exemplo:

Commit:
8d2fa1b

Mensagem:
Criada funcionalidade de login

Mais tarde:

Commit:
a82fd91

Mensagem:
Corrigido erro na autenticação

Depois:

Commit:
e2a91bc

Mensagem:
Adicionado cadastro de usuários

Cada commit representa uma etapa da evolução do projeto.


A importância da mensagem do commit

Muitos iniciantes escrevem mensagens como:

Atualização

ou

teste

ou

Alterações

Isso é um erro.

Imagine daqui a dois anos tentando descobrir onde determinado problema foi corrigido.

O histórico ficará impossível de entender.

Boas mensagens são claras:

✅ Corrige erro na validação do CPF

✅ Adiciona tela de cadastro de clientes

✅ Implementa autenticação JWT

✅ Remove código duplicado


O que é o Staging Area?

Antes de criar um commit existe uma etapa chamada Staging Area.

Ela funciona como uma área de preparação.

Imagine que você está enviando documentos pelos Correios.

Primeiro você separa tudo que deseja enviar.

Depois coloca na caixa.

Somente então despacha.

No Git acontece a mesma coisa.

Fluxo:

Editar arquivo

↓

Adicionar ao Stage

↓

Criar Commit

Os comandos são:

git add arquivo.java

ou

git add .

Depois:

git commit -m "Mensagem do commit"



O que significa HEAD?

Outro conceito muito importante.

O HEAD representa onde você está atualmente no histórico.

Imagine uma sequência de commits.

A ---- B ---- C ---- D
                     ↑
                   HEAD

O HEAD aponta para o commit atual.

Se você voltar para outro commit:

A ---- B ---- C ---- D
          ↑
        HEAD

Agora você está visualizando o estado do projeto naquele momento.


O que é um Branch?

Imagine uma árvore.

Ela possui:

  • tronco;
  • galhos;
  • folhas.

O projeto funciona da mesma maneira.

A branch principal geralmente chama-se:

main

ou antigamente:

master

Quando queremos desenvolver uma nova funcionalidade sem mexer no código principal, criamos uma nova branch.

Exemplo:

main

|

Nova funcionalidade

|

Correção de Login

|

Novo Relatório

Cada desenvolvedor pode trabalhar em uma branch diferente.

Depois todas elas são unidas.


Exemplo visual

main
  |
  |------ login
  |
  |------ cadastro
  |
  |------ relatório

Cada linha representa um trabalho independente.

Isso evita conflitos e permite que várias pessoas desenvolvam ao mesmo tempo.


Por que usar Branches?

Imagine que seu sistema esteja funcionando perfeitamente.

Agora o cliente pede:

  • integração com PIX;
  • login pelo Google;
  • emissão de boletos.

Você não quer modificar diretamente o sistema em produção.

Então cria uma branch:

feature/pix

Desenvolve tudo nela.

Se algo der errado, basta apagar essa branch.

O sistema principal continua intacto.

Essa é uma das maiores vantagens do Git.


O que é Merge?

Depois que uma funcionalidade está pronta, chega o momento de juntá-la ao projeto principal.

Essa união recebe o nome de Merge.

Exemplo:

Antes:

main

A----B----C

         \
          D----E

Depois do Merge:

A----B----C--------F
         \        /
          D------E

Agora todas as alterações fazem parte do projeto principal.


Conflito de Merge

Nem sempre o Merge acontece automaticamente.

Imagine duas pessoas editando exatamente a mesma linha.

Pessoa A:

String nome = "Michel";

Pessoa B:

String nome = "João";

O Git não consegue decidir qual alteração deve permanecer.

Ele marca um conflito.

Você escolhe manualmente qual código ficará.

Não é um erro do Git.

É um mecanismo de proteção para evitar perda de trabalho.

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro