Introdução
Leia sobre sistemas de controle de versão, gerenciamento de código-fonte, o que é Git, como instalá-lo, chaves SSH e repositórios Git.

Este é o ponto de partida do curso Learn Git. Ao final desta introdução, você entenderá o que é um sistema de controle de versão, por que as equipes dependem dele, como o Git se diferencia de ferramentas mais antigas e como colocar o Git em funcionamento na sua máquina. Cada seção abaixo tem um link para um capítulo completo onde o tema é explicado em profundidade.
Este é o caminho que esta seção percorre:
- O que é um sistema de controle de versão (VCS) e as três famílias de VCS.
- Como o gerenciamento de código-fonte (SCM) rastreia alterações e resolve conflitos.
- Como escolher um software de controle de versão para a sua equipe.
- O que é Git e por que se tornou o padrão.
- Como instalar o Git no macOS, Windows e Linux.
- O que é um repositório Git e como ele armazena seu histórico.
- Como as chaves SSH permitem que você se comunique com um servidor remoto com segurança.
Sistema de Controle de Versão
Um Sistema de Controle de Versão (VCS) é uma ferramenta que registra alterações em um conjunto de arquivos ao longo do tempo para que você possa recuperar qualquer versão anterior, ver quem alterou o quê e trabalhar em paralelo sem sobrescrever o trabalho uns dos outros. Às vezes é chamado de Gerenciamento de Código-Fonte (SCM) ou Sistema de Controle de Revisão (RCS).
Existem três famílias de VCS, que diferem em onde o histórico fica armazenado:
- VCS Local mantém todas as versões em um banco de dados em um único computador (por exemplo, a antiga ferramenta
rcs). Simples, mas uma falha de disco perde tudo e não há colaboração real. - VCS Centralizado (CVCS), como Subversion (SVN) ou CVS, armazena o histórico completo em um servidor central. Os desenvolvedores fazem checkout de uma cópia de trabalho, mas o histórico existe apenas no servidor. Se o servidor estiver fora do ar, ninguém pode fazer commit; se for perdido sem backup, o histórico do projeto desaparece.
- VCS Distribuído (DVCS), como Git ou Mercurial, dá a cada desenvolvedor uma cópia completa do repositório, incluindo todo o seu histórico. Você pode fazer commit, criar branches e visualizar o log completamente offline, e qualquer clone pode restaurar os demais.
Git é um VCS distribuído, o que é o principal motivo pelo qual é rápido e resiliente.
Gerenciamento de Código-Fonte
O gerenciamento de código-fonte (SCM) é essencialmente outro nome para controle de versão. É a prática (e o conjunto de ferramentas) de rastrear modificações em um repositório de código-fonte para que você possa revisar o histórico, comparar revisões e resolver conflitos de merge — a situação em que duas pessoas alteram as mesmas linhas e a ferramenta precisa que um humano decida qual alteração prevalece.
O SCM permite que cada desenvolvedor trabalhe de forma independente em um branch separado e depois combine o trabalho com um merge. Além do histórico bruto, um bom SCM fornece blame/anotação, marcação de lançamentos e a capacidade de reverter uma alteração problemática em segundos.
Software de Controle de Versão
O software de controle de versão é o programa concreto que implementa o controle de versão para a sua equipe. Para um único desenvolvedor é conveniente; para uma equipe com vários desenvolvedores é uma necessidade, pois é a única forma segura de mesclar o trabalho de todos.
As opções populares incluem Git, Subversion (SVN), CVS, Mercurial e Monotone. Cada projeto escolhe o que melhor se adapta ao seu fluxo de trabalho; o Git é de longe o mais comum hoje em dia. Os capítulos a seguir comparam seus prós e contras em detalhes.
O que é Git
O Git é o sistema de controle de versão distribuído utilizado na maior parte do mundo do software. Ele rastreia alterações no seu código-fonte durante o desenvolvimento e lida com projetos de qualquer tamanho, desde um script de um único arquivo até o kernel do Linux.
O Git se destaca por algumas razões:
- Branching local rápido e econômico — criar um branch é quase instantâneo porque é apenas um ponteiro para um commit.
- Uma área de staging — você escolhe exatamente quais alterações vão para o próximo commit com
git addantes de executargit commit. - Funciona offline — toda operação, exceto a sincronização com um servidor remoto, é executada contra sua cópia local.
- Integridade dos dados — cada commit é identificado por um hash SHA-1 de seu conteúdo, portanto a corrupção é detectável.
Instalar o Git
Trabalhar com Git começa com a instalação (ou atualização da sua cópia existente). O instalador varia de acordo com o sistema operacional:
- macOS — o instalador Git para Mac, Homebrew (
brew install git) ou MacPorts. - Windows — o pacote oficial Git para Windows, que inclui o Git Bash.
- Linux — o gerenciador de pacotes da sua distribuição, por exemplo
sudo apt install gitno Debian/Ubuntu.
Após a instalação, confirme a versão em um terminal:
git --version
# git version 2.45.2O número exato que você verá será o que estiver disponível no momento da instalação; qualquer versão 2.x recente é adequada para este curso.
Repositório Git
Um repositório Git ("repo") é o armazenamento que mantém os arquivos do seu projeto junto com o histórico completo de cada alteração. O histórico fica em uma pasta oculta .git na raiz do projeto.
Você cria um repositório de uma das duas formas — inicia um novo com git init, ou copia um existente remoto com git clone:
# Turn the current folder into a new, empty repository
git init
# Initialized empty Git repository in /path/to/project/.git/
# Or download an existing project and its full history
git clone https://github.com/user/project.gitChave SSH
Uma chave SSH é uma credencial de acesso usada pelo protocolo SSH (Secure Shell). SSH é um protocolo de rede que permite fazer login de um computador para outro com segurança através de uma rede não confiável.
No Git, um par de chaves SSH (uma chave privada que você mantém em segredo e uma chave pública que você carrega no GitHub, GitLab, etc.) permite que você faça push e pull sem digitar sua senha a cada vez. O capítulo sobre chaves SSH explica como gerar uma chave e adicioná-la à sua conta.