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ção | Comando |
|---|---|
| Ver o que mudou e o que está preparado | git status |
| Ver as linhas alteradas | git diff (ou git diff --staged) |
| Preparar tudo que mudou | git add . |
| Gravar | git commit -m "mensagem no imperativo" |
| Histórico resumido com ramificações | git log --oneline --graph |
| Criar branch e mudar para ela | git switch -c nome |
| Trazer mudanças do GitHub | git pull |
| Enviar commits | git push |
| Copiar um projeto existente | git clone endereço |
Como desfazer sem perder trabalho
| Você quer... | Use | Cuidado |
|---|---|---|
| Descartar alterações não commitadas de um arquivo | git restore arquivo | As alterações somem de vez |
| Tirar do staging, mantendo a alteração | git restore --staged arquivo | Seguro |
| Corrigir a mensagem ou incluir um arquivo no último commit | git commit --amend | Só antes do push |
| Desfazer um commit já enviado | git revert id-do-commit | Seguro: cria um commit inverso |
| Guardar alterações temporariamente para trocar de branch | git stash e depois git stash pop | Seguro |
| Recuperar um commit "perdido" | git reflog | Mostra 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 enviarmain, mas a branch local se chamamasterou ainda não há nenhum commit. Rodegit branchpara 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. Rodegit 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 comssh -T git@github.com.fatal: not a git repository: você está fora da pasta do projeto. Usecdaté 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
- Git. Página de instalação e notas da versão 2.56.0.
- Git. BreakingChanges: mudanças previstas para o Git 3.0.
- Git. Documentação oficial e livro Pro Git.
- GitHub Docs. Gerar uma nova chave SSH e testar a conexão SSH.
- GitHub Docs. Armazenar credenciais do GitHub no Git.
- GitHub Docs. Sobre a proteção de push.
- GitHub. Planos e preços.




