coldwa.st
Todos os guiasProgramaçãoWebDadosFerramentasBases de dadosHaskellConceitosCabal e buildsToolchainCompiladorDesempenhoEditor e HLS

Programação · ferramentas · controlo de versões

O que é o Git?

Por ColdwastAtualizado a 14 de junho de 20267 min de leitura#git#tools#workflow
Linhas de código-fonte num ecrã escuro
Linhas de código-fonte no ecrã — o Git regista o histórico completo das alterações de um código como este.

Se escreves código, vais encontrar o Git logo no primeiro dia. É a ferramenta que quase todos os projetos de software usam para acompanhar as alterações, e a base por baixo do GitHub, do GitLab e do fluxo de trabalho de desenvolvimento moderno. Este guia explica o que é o Git, o punhado de conceitos que o tornam evidente, porque é importante e em que difere do GitHub.

A definição curta

O Git é um sistema de controlo de versões distribuído: regista o histórico de alterações de um conjunto de ficheiros para que possas revê-lo, ramificar, fundir, colaborar e voltar atrás. Criado por Linus Torvalds em 2005 para gerir o kernel do Linux, é hoje o padrão de facto. „Distribuído“ significa que cada cópia do projeto carrega o seu histórico completo — podes trabalhar, fazer commit e consultar o histórico totalmente offline.

Os conceitos fundamentais

  • Repositório (repo) — a pasta do projeto mais todo o seu histórico, guardados num diretório oculto .git.
  • Commit — um instantâneo guardado dos teus ficheiros num dado momento, com uma mensagem que descreve a alteração. O histórico é uma cadeia de commits.
  • Ramo (branch) — um apontador móvel que te permite desenvolver uma funcionalidade de forma isolada sem perturbar a linha principal (geralmente main).
  • Merge (fusão) — combinar as alterações de um ramo noutro.
  • Remote (remoto) — uma cópia partilhada do repositório alojada noutro lugar (por ex. no GitHub) para a qual fazes push e da qual fazes pull.
Uma linha de comandos do terminal num ecrã
Uma linha de comandos do terminal — o Git é pilotado sobretudo pela linha de comandos, embora os editores e as interfaces gráficas também o envolvam.

O fluxo de trabalho do dia a dia

O ciclo que a maioria dos programadores executa dezenas de vezes por dia:

git clone <url>      # copy a repository locally
# ...edit files...
git add .            # stage the changes you want to save
git commit -m "Add login form"   # save a snapshot with a message
git push             # send your commits to the shared remote

Para trabalhar em algo novo sem partir a linha principal, ramificas: git checkout -b my-feature, fazes os commits aí e depois executas um git merge (muitas vezes via uma pull request) de volta para main. Para obter o trabalho dos outros, executas git pull.

Porque é que o Git é importante

  • Histórico e desfazer — cada alteração é registada, por isso podes ver quem alterou o quê, quando e porquê, e voltar atrás num erro.
  • Colaboração — muitas pessoas podem trabalhar em paralelo no mesmo projeto em ramos diferentes, e depois fundir em segurança.
  • Experimentação segura — ramifica, experimenta algo, descarta-o se falhar — a linha principal mantém-se intacta.
  • Está em todo o lado — o open source, as empresas, as pipelines de CI/CD e o deployment pressupõem todos o Git.

Git vs GitHub

São confundidos a toda a hora. O Git é a ferramenta de controlo de versões que corre na tua máquina. O GitHub (como o GitLab ou o Bitbucket) é um serviço de alojamento que guarda repositórios Git online e acrescenta funcionalidades de colaboração — pull requests, issues, controlo de acessos, CI. Podes usar o Git sem qualquer conta GitHub; o GitHub é um lugar popular para colocar um remote Git, não o Git em si.

A curva de aprendizagem honesta

O Git é poderoso, e o seu conjunto de comandos pode parecer desconcertante no início — os merges podem entrar em conflito, e alguns comandos podem reescrever o histórico de formas que surpreendem os principiantes. A boa notícia: 90 % do trabalho diário usa apenas clone, add, commit, push, pull e branch. Domina estes e aprende o resto (rebase, stash, reset) quando realmente precisares.

FAQ

O Git é a mesma coisa que o GitHub? Não. O Git é o software de controlo de versões no teu computador; o GitHub é um serviço online que aloja repositórios Git e acrescenta ferramentas de colaboração. O Git funciona sem o GitHub.

O que é um commit? Um instantâneo guardado do teu projeto num dado momento, com uma mensagem que descreve o que mudou. O histórico de um projeto é uma sequência de commits.

É preciso usar a linha de comandos? Não — os editores (VS Code) e os clientes gráficos envolvem o Git, e a maioria dos IDE integra-o — mas a linha de comandos é universal e vale a pena aprendê-la, já que cada tutorial e cada sistema de CI a falam.

O que significa „distribuído“? Cada clone de um repositório Git contém o histórico completo, por isso podes fazer commit, ramificar e percorrer o histórico offline. Não há uma única cópia central da qual dependas para trabalhar.

O Git acompanha o código; os algoritmos e as API são aquilo que esse código exprime. Explora outras explicações claras no nosso índice de guias.

Guia independente, mantido pela comunidade. coldwa.st é um site de recursos de programação; este artigo é um texto explicativo novo e original sobre o Git. Os comandos refletem o comportamento padrão do Git — verifica detalhes e casos particulares na documentação oficial do Git.