O Git guarda o histórico de um projeto no seu computador; o GitHub hospeda esse histórico na internet para você compartilhar, fazer backup e colaborar. Neste tutorial, você cria um projeto pequeno, publica no GitHub e abre o seu primeiro pull request, com os comandos conferidos na documentação oficial em outubro de 2026.

Reserve uns 40 minutos e um terminal: Git Bash no Windows, Terminal no macOS ou qualquer terminal no Linux.

Passo 1: instale e confira a versão

Em outubro de 2026, a versão mais recente do Git é a 2.56.0, publicada em 28 de setembro de 2026, segundo o git-scm.com. No Windows, o instalador oficial (Git for Windows, hoje na 2.56.0.2) já inclui o Git Bash e o Git Credential Manager. No macOS, o comando git aparece com as ferramentas de linha de comando do Xcode ou pelo Homebrew (brew install git); no Ubuntu e no Debian, use sudo apt install git.

git --version

Se aparecer algo como git version 2.56.0, está pronto. Versões um pouco mais antigas funcionam para tudo deste guia, mas convém atualizar por causa das correções de segurança.

Passo 2: configure identidade e branch padrão

Cada commit registra nome e e-mail. Configure uma vez por computador:

git config --global user.name "Ana Souza"
git config --global user.email "ana@exemplo.com"
git config --global init.defaultBranch main

A terceira linha merece explicação. O Git ainda cria repositórios com a branch master por padrão, enquanto o GitHub usa main, e essa diferença confunde muito iniciante na hora do push. O documento de mudanças planejadas do próprio Git (BreakingChanges) prevê que o padrão passe a ser main no Git 3.0; até lá, a configuração resolve.

Se não quiser seu e-mail pessoal exposto em commits públicos, o GitHub oferece um endereço do tipo numero+usuario@users.noreply.github.com nas configurações de e-mail da conta.

Passo 3: crie o projeto e o primeiro commit

mkdir conversor-moedas
cd conversor-moedas
git init
echo "# Conversor de moedas" > README.md
git status

O git status mostra o README.md como "untracked": o Git vê o arquivo, mas ainda não o acompanha. O caminho até o histórico tem duas etapas:

git add README.md
git commit -m "Cria README do projeto"
git log --oneline

git add coloca o arquivo na área de preparação (staging), e git commit grava uma "fotografia" do que estava preparado. Essa separação permite escolher o que entra em cada commit: você pode ter mexido em cinco arquivos e commitar só dois.

Passo 4: proteja segredos com o .gitignore antes de tudo

Crie um arquivo .gitignore antes de escrever código de verdade:

.env
.venv/
__pycache__/
node_modules/
*.log

Arquivos .env costumam guardar chaves de API e senhas de banco. Um segredo commitado fica no histórico mesmo que seja apagado no commit seguinte; a única correção segura é revogar a chave e gerar outra. O GitHub ativa por padrão a proteção de push para contas pessoais, que bloqueia o envio de segredos reconhecidos para repositórios públicos, mas ela não reconhece todos os formatos. O guia de APIs mostra como ler chaves de variáveis de ambiente.

git add .gitignore
git commit -m "Ignora arquivos de ambiente e dependências"

Passo 5: conecte-se ao GitHub

O GitHub não aceita a senha da conta no terminal. Há dois caminhos recomendados pela documentação oficial.

HTTPS com gerenciador de credenciais (mais simples). No Windows, o Git Credential Manager já vem com o Git for Windows: no primeiro push, abre uma janela do navegador para você entrar no GitHub. Outra opção é instalar a GitHub CLI e rodar gh auth login.

SSH (comum entre quem programa todo dia). Gere uma chave e adicione a parte pública (.pub) em Settings > SSH and GPG keys:

ssh-keygen -t ed25519 -C "ana@exemplo.com"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com

Se tudo deu certo, o último comando responde: "Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access." Proteja a chave com uma senha (passphrase) e ative a autenticação em dois fatores na conta do GitHub.

Passo 6: publique o repositório

No GitHub, clique em New repository, dê o nome conversor-moedas e não marque a opção de criar README, para evitar um conflito logo no primeiro envio. Depois:

git remote add origin git@github.com:ana-souza/conversor-moedas.git
git push -u origin main

Troque ana-souza pelo seu usuário (ou use o endereço https:// se escolheu HTTPS). O -u liga a branch local à remota, e nas próximas vezes basta git push.

No plano Free, conferido em outubro de 2026 na página de preços do GitHub, repositórios públicos e privados são ilimitados e há 2.000 minutos mensais de GitHub Actions para repositórios privados (em públicos, os minutos são gratuitos).

Passo 7: trabalhe em uma branch e abra um pull request

Nunca desenvolva direto na main de um projeto compartilhado. Crie uma branch para cada mudança:

git switch -c adiciona-cotacao

Crie o arquivo conversor.py com uma função simples:

def converter(valor_reais: float, cotacao: float) -> float:
    """Converte reais para outra moeda, dada a cotação em reais."""
    return round(valor_reais / cotacao, 2)


if __name__ == "__main__":
    print(converter(100, 5.40))  # 18.52

Antes de commitar, revise o que mudou:

git diff
git add conversor.py
git commit -m "Adiciona função de conversão de reais"
git push -u origin adiciona-cotacao

O GitHub mostrará um botão Compare & pull request. O pull request (PR) é o pedido para juntar a branch na main: ali alguém revisa linha por linha, comenta e aprova. Mesmo sozinho, abrir PRs para você mesmo cria um histórico explicado do projeto, algo que recrutadores costumam olhar no portfólio.

Depois do merge pelo site, atualize sua cópia local:

git switch main
git pull
git branch -d adiciona-cotacao

Os comandos do dia a dia

SituaçãoComando
Ver o que mudou e o que está preparadogit status
Ver as linhas alteradasgit diff (ou git diff --staged)
Preparar tudo que mudougit add .
Gravargit commit -m "mensagem no imperativo"
Histórico resumido com ramificaçõesgit log --oneline --graph
Criar branch e mudar para elagit switch -c nome
Trazer mudanças do GitHubgit pull
Enviar commitsgit push
Copiar um projeto existentegit clone endereço

Como desfazer sem perder trabalho

Você quer...UseCuidado
Descartar alterações não commitadas de um arquivogit restore arquivoAs alterações somem de vez
Tirar do staging, mantendo a alteraçãogit restore --staged arquivoSeguro
Corrigir a mensagem ou incluir um arquivo no último commitgit commit --amendSó antes do push
Desfazer um commit já enviadogit revert id-do-commitSeguro: cria um commit inverso
Guardar alterações temporariamente para trocar de branchgit stash e depois git stash popSeguro
Recuperar um commit "perdido"git reflogMostra tudo que a HEAD já apontou

git reset --hard e git push --force reescrevem o histórico e podem apagar trabalho de outras pessoas. Em repositório compartilhado, prefira git revert; se precisar forçar, git push --force-with-lease ao menos recusa o envio quando alguém publicou algo que você ainda não viu.

Quando dá conflito

Se você e outra pessoa alteraram as mesmas linhas, o git pull ou o git merge param e marcam o arquivo:

<<<<<<< HEAD
    return round(valor_reais / cotacao, 2)
=======
    return round(valor_reais / cotacao, 4)
>>>>>>> outra-branch

Apague os marcadores, deixe a versão correta, salve e conclua com git add arquivo e git commit. O VS Code mostra botões como "Accept Current Change" e "Accept Incoming Change" sobre cada bloco, o que facilita nas primeiras vezes.

Mensagens de erro que todo iniciante vê

  • error: src refspec main does not match any: você tentou enviar main, mas a branch local se chama master ou ainda não há nenhum commit. Rode git branch para ver o nome e faça o primeiro commit.
  • ! [rejected] main -> main (fetch first): o GitHub tem commits que você não tem, geralmente um README criado pelo site. Rode git pull, resolva conflitos e envie de novo.
  • Permission denied (publickey): a chave SSH não foi adicionada à conta ou ao agente. Refaça o passo 5 e teste com ssh -T git@github.com.
  • fatal: not a git repository: você está fora da pasta do projeto. Use cd até ela.
  • Support for password authentication was removed: você digitou a senha da conta. Use o gerenciador de credenciais, a GitHub CLI ou SSH.

Perguntas frequentes

Devo usar o terminal ou o GitHub Desktop?

Os dois funcionam, e o GitHub Desktop e o painel de controle de código do VS Code são bons para visualizar mudanças. Aprender os comandos primeiro ajuda a entender o que os botões fazem e a resolver os erros listados acima, que as interfaces nem sempre explicam.

Posso deixar o repositório privado e mostrar no portfólio?

Repositório privado só é visível para quem você convidar. Para portfólio, publique como público os projetos sem dados sensíveis e com um README que explique o que o código faz, como no plano de aprender a programar em 12 semanas.

GitHub, GitLab ou Bitbucket?

O Git é o mesmo nos três, então os comandos deste guia valem para todos. A diferença está nos recursos de colaboração, automação e preço; para quem está começando, o GitHub concentra a maior parte dos projetos de código aberto.

Como uso Git com assistentes de IA?

Faça um commit antes de aceitar uma mudança grande sugerida pela IA: se algo quebrar, git diff mostra exatamente o que foi alterado e git restore volta atrás. O fluxo completo está em programar com IA.

Fontes