Repositório no Git: o que é, quais tipos existem e como funcionam

Autor: IT Sectr Publicado: 2026-05-09 Tempo de leitura: 8 min

Repositório Git — é um armazenamento do código fonte do projeto onde o Git rastreia cada alteração de arquivos ao longo do desenvolvimento. O repositório contém o histórico completo de commits, branches e tags, permitindo que os desenvolvedores trabalhem juntos no código. De acordo com Git, 2024, o repositório é a base de qualquer sistema de controle de versão e é usado em milhões de projetos em todo o mundo.

Principais conclusões

  • Repositório Git — é um diretório do projeto com uma pasta de serviço .git onde todo o histórico de alterações é armazenado.
  • Repositório local — está no computador do desenvolvedor e permite trabalhar com o código sem conexão com a internet.
  • Repositório remoto — é hospedado em um servidor GitHub, GitLab ou Bitbucket e serve para sincronização entre os participantes.
  • Git — armazena dados como instantâneos de arquivos, não como uma lista de alterações, o que acelera as operações de ramificação e fusão.
  • Sistema de controle de versão — resolve o problema do trabalho simultâneo no mesmo projeto, evitando conflitos ao mesclar código.

O que é um repositório no Git

Repositório Git — é uma estrutura de dados onde o sistema de controle de versão armazena metadados e objetos que descrevem o histórico de alterações dos arquivos do projeto. Quando um desenvolvedor inicializa um repositório com o comando git init, o Git cria uma pasta oculta .git na raiz do projeto.

Dentro desta pasta estão todos os objetos, referências e arquivos de configuração necessários para o funcionamento do sistema. O repositório não está vinculado a um local específico — o desenvolvedor pode criá-lo localmente e depois vinculá-lo a um servidor remoto.

O Git usa um modelo de repositório distribuído: cada membro do projeto tem uma cópia completa do histórico em seu computador. Isso significa que a maioria das operações — commit, visualizar histórico, criar branches — são realizadas localmente sem contactar o servidor.

De acordo com a documentação do Git, a arquitetura distribuída torna o sistema tolerante a falhas: se o servidor falhar, qualquer repositório local pode servir como fonte para restaurar o histórico completo do projeto.

Repositório local e remoto

Repositório local — é uma cópia do projeto no computador do desenvolvedor. Contém todo o histórico de commits, branches e tags, e permite realizar operações de commit, branch, merge e rebase sem conexão com a rede.

Repositório remoto — é hospedado em um servidor e serve como ponto de sincronização para todos os membros da equipe. Os desenvolvedores enviam suas alterações com o comando git push e recebem as alterações de outros com git pull.

A conexão entre o repositório local e o remoto é configurada através do remote origin — a URL do servidor armazenada na configuração do Git. Um repositório local pode estar vinculado a vários repositórios remotos, o que é útil ao trabalhar com forks.

A principal vantagem deste modelo é que o desenvolvedor pode trabalhar no código offline e sincronizar as alterações apenas quando estiver pronto para enviar o resultado.

Diferenças entre repositório local e remoto

CaracterísticaLocalRemoto
LocalizaçãoNo computador do desenvolvedorEm um servidor (GitHub, GitLab)
Acesso sem redeAcesso completo a todas as operaçõesIndisponível sem conexão
SincronizaçãoPush/Pull com o remotoRecebe push dos locais
BackupNão protegido contra perda de dadosArmazenado no servidor com backups

Como o Git armazena dados em um repositório

O modelo de armazenamento do Git é fundamentalmente diferente de outros sistemas de controle de versão. Em vez de armazenar uma lista de alterações (deltas) entre versões, o Git guarda instantâneos completos de todos os arquivos do projeto no momento de cada commit.

Cada objeto no repositório é identificado por um hash SHA-1 único de 40 caracteres. Se o conteúdo de um arquivo não mudou entre commits, o Git não cria um novo objeto, mas reutiliza o existente — isso economiza espaço.

O Git usa quatro tipos de objetos: blob (conteúdo do arquivo), tree (estrutura do diretório), commit (instantâneo com metadados) e tag (referência nomeada a um commit). Todos os objetos estão armazenados na pasta .git/objects.

De acordo com Git Internals, o modelo de objetos do Git garante a integridade dos dados: qualquer alteração no conteúdo de um arquivo gera um novo hash, tornando impossível modificar o histórico sem ser detectado.

Estrutura da pasta .git

A pasta .git é o coração do repositório. Sem ela, o Git não pode rastrear alterações, e um diretório comum permanece apenas uma coleção de arquivos. Compreender a estrutura desta pasta ajuda a diagnosticar problemas com o repositório.

  • objects/ — todos os objetos do repositório: blobs, trees, commits, tags. Armazenados de forma compactada.
  • refs/ — referências a commits: heads (branches), tags (etiquetas), remotes (branches remotas).
  • HEAD — arquivo que aponta para a branch ativa ou commit atual.
  • config — configuração do repositório: URL remota, nome de usuário, email e outros parâmetros.
  • index — área de staging onde o Git armazena informações sobre os arquivos preparados para commit.
  • logs/ — registros de atualização de referências (reflog) que armazenam o histórico de movimentos do HEAD e das branches.

O arquivo HEAD merece atenção especial. Em estado normal contém uma referência simbólica a uma branch, por exemplo ref: refs/heads/main. Em estado detached HEAD aponta diretamente para um commit — isso significa que novos commits não estarão vinculados a nenhuma branch.

Operações básicas com o repositório

Trabalhar com um repositório Git envolve um conjunto de operações básicas que o desenvolvedor realiza diariamente. Cada operação altera o estado do repositório adicionando novos objetos ou movendo referências.

  • git init — cria um novo repositório vazio no diretório atual. O Git cria a pasta .git com a estrutura inicial.
  • git clone — copia um repositório remoto existente para a máquina local junto com todo o histórico de commits.
  • git add — adiciona alterações de arquivos à área de staging (índice), preparando-os para o commit.
  • git commit — cria um instantâneo do projeto com base nos dados do índice e o salva como um novo objeto commit.
  • git push — envia novos commits do repositório local para o remoto, atualizando as branches no servidor.
  • git pull — recebe novos commits do repositório remoto e os mescla com a branch local atual.

As operações push e pull são as únicas que requerem conexão com o servidor remoto. Todas as outras operações são realizadas inteiramente localmente, garantindo alta velocidade mesmo com um grande volume de histórico.

Ciclo de vida de um arquivo no repositório

Cada arquivo no repositório passa por quatro estados: untracked (não rastreado), modified (modificado), staged (preparado) e committed (confirmado). O Git rastreia apenas os arquivos que foram explicitamente adicionados via git add ou que já estão no histórico de commits.

Compreender este modelo é a chave para trabalhar eficazmente com o Git. O desenvolvedor pode preparar seletivamente apenas uma parte dos arquivos modificados para o commit, criando commits logicamente completos com uma descrição clara.

Os repositórios remotos geralmente são hospedados em plataformas especializadas que fornecem interface web, sistema de controle de acesso e ferramentas adicionais para desenvolvimento colaborativo.

  • GitHub — a maior plataforma com mais de 100 milhões de repositórios. Oferece Actions, Pull Requests, Issues e Wiki. Gratuito para projetos públicos.
  • GitLab — plataforma com CI/CD integrado, Container Registry e um pipeline DevOps embutido. Disponível como SaaS e versão self-hosted.
  • Bitbucket — solução da Atlassian com integração com Jira e Trello. Popular em ambientes corporativos devido às configurações flexíveis de acesso.

A escolha da plataforma depende do tamanho da equipe, requisitos de privacidade e integrações necessárias. Para desenvolvimento móvel, GitHub é frequentemente escolhido devido ao amplo suporte da comunidade e integração com ferramentas CI/CD para iOS e Android.

Exemplos de comandos para trabalhar com um repositório

Vamos considerar um cenário prático: um desenvolvedor clona um repositório existente, cria uma nova branch, faz alterações e as envia para o servidor. Cada comando demonstra o trabalho com diferentes componentes do repositório.

bash
# Clonar um repositório remoto
git clone https://github.com/user/mobile-app.git

# Navegar para o diretório do projeto
cd mobile-app

# Criar uma nova branch feature e mudar para ela
git checkout -b feature/auth

# Verificar o estado dos arquivos modificados
git status

# Adicionar todas as alterações à área de staging
git add .

# Criar um commit com descrição
git commit -m "Add authentication module"

# Enviar alterações para o repositório remoto
git push origin feature/auth

O comando git status é um dos mais úteis no trabalho diário. Ele mostra quais arquivos foram modificados, quais estão preparados para commit e quais não são rastreados pelo Git.

Visualizar o histórico de commits

Para analisar o histórico do repositório, o comando git log é usado com várias flags de formatação. Ele exibe a cronologia dos commits, seus autores, datas e identificadores SHA-1.

bash
# Ver histórico com visualização do grafo de branches
git log --oneline --graph --all

# Ver alterações em um commit específico
git show a1b2c3d

# Comparar o estado atual com o último commit
git diff HEAD

# Ver histórico de um arquivo específico
git log --follow src/MainActivity.kt

A flag --graph exibe um gráfico ASCII das ramificações, o que é especialmente útil em repositórios com trabalho ativo em várias branches. Para projetos móveis com lançamentos frequentes, um gráfico visual ajuda a avaliar rapidamente a estrutura do desenvolvimento.

Perguntas frequentes

Qual a diferença entre repositório e projeto?

Um repositório é um armazenamento técnico de código com histórico de alterações. Projeto é um conceito mais amplo que inclui o repositório, sistema de gerenciamento de tarefas, documentação e processos de desenvolvimento. Um projeto pode conter vários repositórios.

Como criar um repositório no GitHub?

Crie um novo repositório através da interface web do GitHub clicando no botão New. Especifique um nome, descrição e nível de acesso. Em seguida, clone o repositório na máquina local ou vincule-o a um repositório local existente via git remote add origin.

É possível restaurar um repositório excluído?

Se um repositório remoto foi excluído do servidor, mas pelo menos um desenvolvedor tem uma cópia local, o repositório pode ser restaurado. Basta criar um novo repositório remoto e executar git push --force da cópia local com todo o histórico.

O que é um fork de repositório?

Um fork é uma cópia de um repositório de outra pessoa na sua conta. Você obtém uma cópia completa do histórico e pode fazer qualquer alteração sem afetar o original. Forks são usados para participar de projetos open-source através de Pull Requests.

Como reduzir o tamanho de um repositório?

Use git gc para comprimir objetos e remover dados inacessíveis. Remova arquivos grandes do histórico através de git filter-branch ou git filter-repo. Para projetos com arquivos binários, considere Git LFS (Large File Storage).

Resumo

  • Repositório Git — é um armazenamento de código com histórico completo de alterações, onde cada commit é um instantâneo de todos os arquivos do projeto em um determinado momento.
  • Repositório local — está no computador do desenvolvedor e suporta o conjunto completo de operações Git sem conexão com a rede.
  • Repositório remoto — sincroniza o trabalho da equipe através de push e pull, fornecendo uma única fonte de verdade para todos os participantes.
  • A pasta .git — contém todas as informações de serviço: objetos, referências a branches, configuração e o registro de operações reflog.
  • GitHub, GitLab e Bitbucket — são as principais plataformas para hospedar repositórios remotos com ferramentas CI/CD adicionais.
  • O modelo de objetos do Git — usa hashes SHA-1 para identificar cada objeto, garantindo a integridade dos dados do repositório.
  • Recomendação: faça commit pelo menos uma vez ao dia e sincronize com o repositório remoto após concluir cada etapa de trabalho.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também