W3docs

O que é Git

Nesta página você encontrará a definição e a importância do Git, além de informações sobre desempenho, segurança e flexibilidade como sistema de controle de versão.

Este capítulo explica o que é Git, por que ele se tornou o padrão para rastrear código-fonte e como suas escolhas de design — histórico distribuído, armazenamento endereçado por conteúdo e ramificações baratas — se traduzem em benefícios cotidianos para desenvolvedores e equipes. Ao final, você entenderá onde o Git se encaixa, conhecerá os principais comandos para começar e saberá quais capítulos relacionados ler a seguir.

Definição

Git é um sistema de controle de versão (VCS) que registra alterações em um conjunto de arquivos ao longo do tempo, permitindo que você recupere qualquer versão anterior, veja quem mudou o quê e trabalhe no mesmo projeto em paralelo sem sobrescrever o trabalho alheio. É o VCS mais amplamente utilizado no desenvolvimento de software.

O Git foi criado em 2005 por Linus Torvalds, o autor do kernel Linux, para gerenciar o próprio código-fonte do Linux após o projeto perder acesso à ferramenta anterior. Hoje ele impulsiona projetos de todos os tamanhos, desde um único script até o próprio kernel Linux.

A característica definidora do Git é que ele é distribuído. Em vez de manter o histórico do projeto em um servidor central, cada desenvolvedor clona uma cópia completa do repositório — incluindo todo o histórico — em sua própria máquina. Você pode fazer commits, criar branches, visualizar o histórico e pesquisar o log completamente offline; só precisa de rede para compartilhar o trabalho com outras pessoas.

Distribuído vs. centralizado. Em um VCS centralizado (como o Subversion), há um servidor autoritativo e fazer commit requer conexão de rede. Em um VCS distribuído como o Git, cada clone é um backup completo, a maioria das operações é local e, portanto, rápida, e não há ponto único de falha.

Importância do Git

O Git é um VCS distribuído, rápido e eficiente que lida com projetos de qualquer tamanho, de pequenos scripts a grandes bases de código. Alguns motivos pelos quais ele é importante no dia a dia:

  • Ramificação local barata. Criar um branch é quase instantâneo porque o Git apenas escreve um pequeno ponteiro, tornando a experimentação isolada a norma, e não a exceção. Veja git branch.
  • Uma área de preparação conveniente. O Git permite que você monte exatamente quais alterações farão parte do próximo commit antes de registrá-lo, mantendo cada commit focado. Veja git add.
  • Múltiplos fluxos de trabalho. A mesma ferramenta suporta um desenvolvedor solo e uma equipe de 100 pessoas. Veja Git workflows.
  • Gratuito e de código aberto. Não há custo de licença e o código-fonte está aberto para inspeção e contribuição.
  • Desenvolvimento não linear. Muitas linhas de trabalho podem prosseguir em paralelo e ser mescladas depois, permitindo que desenvolvedores e equipes trabalhem separadamente sem se prejudicarem.

Gerenciamento de Código-Fonte

Desempenho do Git

O Git foi construído para velocidade, e grande parte dessa velocidade vem do fato de que as operações são executadas no repositório local, e não em um servidor remoto. Ramificação, mesclagem, commit e comparação de versões anteriores são todos otimizados para parecer instantâneos mesmo em históricos extensos.

Uma decisão de design fundamental é que o Git rastreia conteúdo, não arquivos. Ao fazer um commit, o Git armazena um instantâneo do conteúdo de cada arquivo; se um arquivo não foi alterado entre commits, o Git armazena um ponteiro para o conteúdo idêntico que já possui, em vez de uma nova cópia. Como o armazenamento é indexado pelo conteúdo, o Git pode detectar quando um arquivo foi apenas renomeado, dividido ou reorganizado. No disco, os objetos do repositório usam uma combinação de codificação delta (armazenando diferenças entre objetos similares) e compressão zlib, mantendo mesmo históricos longos compactos.

Segurança do Git

A principal prioridade do Git é a integridade do código-fonte gerenciado. Cada objeto em um repositório — conteúdos de arquivos, diretórios, commits e tags — é identificado por um hash criptográfico de seu conteúdo. Como o hash de cada commit também incorpora o hash de seu pai, todo o histórico está encadeado: alterar qualquer conteúdo passado mudaria todos os hashes subsequentes, tornando adulterações silenciosas detectáveis.

O Git historicamente usou SHA-1 para esses hashes e está migrando para SHA-256 para fortalecer essa garantia. Além da integridade, você também pode verificar quem fez um commit assinando commits e tags com uma chave GPG ou SSH, permitindo que revisores confirmem que uma alteração veio de um autor confiável.

Flexibilidade do Git

Uma das vantagens oferecidas pelo Git é sua flexibilidade em vários aspectos:

  • Rastrear alterações – Cada commit carrega um autor, um timestamp e uma mensagem, fornecendo sempre um registro legível do que mudou e por quê.
  • Backup e restauração – Como cada clone contém o histórico completo, a máquina de cada desenvolvedor é efetivamente um backup e qualquer estado anterior pode ser restaurado.
  • Colaboração – Equipes podem trabalhar no mesmo projeto simultaneamente e combinar seu trabalho por meio de mesclagem.
  • Ramificação e mesclagem – O trabalho acontece em um branch e, quando revisado e aprovado, é mesclado de volta ao branch principal. O histórico mostra quem alterou cada arquivo e exatamente quais linhas diferem.
  • Implantação – O Git não implanta o código em si, mas rastreia versões exatas e se integra perfeitamente com pipelines de CI/CD que compilam e entregam essas versões.

Flexibilidade do Git

Controle de Versão com Git

Atualmente, o Git é o sistema de controle de versão mais preferido porque possui quase tudo o que os desenvolvedores precisam para obter resultados mais eficazes. Os principais motivos para isso estão listados abaixo:

  • O Git é tão popular que a maioria dos desenvolvedores consegue trabalhar com ele antes mesmo de se formarem na faculdade ou universidade. Além disso, o Git é considerado a base dos sistemas de controle de versão, pois os desenvolvedores que já aprenderam a trabalhar com ele podem facilmente dominar outros sistemas.
  • Devido à sua prevalência, muitas ferramentas e serviços de software importantes estão integrados ao Git.
  • Há muitos livros, tutoriais e até sites especializados que podem ajudar os desenvolvedores a aprender Git.
  • Como o Git é um software de código aberto, os desenvolvedores têm a oportunidade de usá-lo sem pagar nenhuma taxa.

A principal razão pela qual o Git é criticado é a dificuldade de aprendizado. Em particular, alguns termos usados no Git podem ter definições diferentes das de outros VCS. No entanto, vale a pena aprendê-lo, pois a capacidade de usar Git é uma excelente vantagem para equipes e desenvolvedores individuais e é uma das chaves para o sucesso futuro deles.

As soluções Git mais populares

Diversas plataformas de terceiros gerenciam repositórios Git e são amplamente utilizadas para o desenvolvimento de software rápido e eficaz. Os serviços de hospedagem baseados em Git mais populares são GitHub, Bitbucket e GitLab.

O GitHub é um serviço de hospedagem de repositórios baseado em Git, originalmente lançado em 2008 por Tom Preston-Werner, Chris Wanstrath e PJ Hyatt. É a maior plataforma de hospedagem de repositórios, com mais de 38 milhões de projetos. Permite hospedar e revisar código, gerenciar projetos e desenvolver software.

O Bitbucket foi lançado em 2008 por uma startup australiana e originalmente suportava apenas projetos Mercurial. Em 2010, o Bitbucket foi adquirido pela Atlassian e, a partir de 2011, começou a suportar hospedagem Git, que é agora seu foco principal. Oferece repositórios privados ilimitados e gratuitos, integração com Jira e Trello e entrega contínua integrada.

O GitLab começou como um projeto de Dmitriy Zaporozhets e Valery Sizov em 2011, com o objetivo de fornecer uma alternativa às soluções de gerenciamento de repositórios disponíveis. A empresa, no entanto, só foi formalmente constituída em 2014. Oferece integração e entrega contínua, desenvolvimento ágil, Auto DevOps, entre outros.

Comandos Básicos do Git

Depois que o Git está instalado, alguns comandos principais cobrem o fluxo de trabalho diário:

  • git init – Cria um novo repositório Git no diretório atual.
  • git clone <url> – Baixa um repositório existente, com histórico completo, de um servidor remoto.
  • git add <file> – Prepara as alterações para que sejam incluídas no próximo commit.
  • git commit -m "message" – Registra as alterações preparadas como um novo instantâneo com uma mensagem descritiva.
  • git status – Mostra quais arquivos foram alterados, preparados ou não rastreados.
  • git push – Envia commits locais para um repositório remoto.

Um primeiro repositório, do início ao fim

A sequência abaixo inicia um novo projeto, registra um primeiro commit e inspeciona o resultado. Execute estes comandos em uma pasta vazia para acompanhar:

# 1. Start tracking the current folder
git init

# 2. Create a file and stage it for the next commit
echo "# My Project" > README.md
git add README.md

# 3. Record the snapshot
git commit -m "Add project README"

# 4. See the history you just created
git log --oneline

A saída do git log --oneline é uma linha por commit — um hash curto seguido da mensagem:

a1b2c3d (HEAD -> main) Add project README

A partir daqui, você adicionaria um repositório remoto e executaria git push para compartilhar o trabalho, ou criaria um branch para iniciar uma nova funcionalidade. O capítulo git log aprofunda a leitura do histórico.

Prática

Prática
Quais são as principais funcionalidades e vantagens do Git?
Quais são as principais funcionalidades e vantagens do Git?
Was this page helpful?