Este tutorial foca no uso do terminal (integrado no VS Code ou externo) para gerenciar branches no Git e GitHub, cobrindo criação, commits essenciais, correção de erros e merge.
Contexto: Usuário do VS Code com projeto Git/GitHub buscando aprofundar o uso do terminal.
git --version.Ctrl+` ou Cmd+`).git init já executado e, idealmente, conectado a um repositório remoto (git remote add origin <URL>).master ou main. Adapte os comandos se necessário.Objetivo: Entender como fazer commits efetivos e boas práticas.
git status # Verificar alterações
git diff # Ver mudanças detalhadas
git add . # Adicionar todas as alterações
git commit -m "feat: adiciona funcionalidade de login"
git status e git diff# Exemplos de boas mensagens de commit:
feat(auth): implementa autenticação via Google
fix(login): corrige validação de senha
docs(readme): atualiza instruções de instalação
style(css): ajusta layout responsivo
refactor(api): melhora performance das consultas
test(unit): adiciona testes para módulo de pagamento
chore(deps): atualiza dependências
Objetivo: Isolar novas funcionalidades ou correções sem afetar a versão estável (master/main).
feature/login-screen, fix/bug-123).feature/, fix/, hotfix/, release/).-.Ctrl+` ou Cmd+`.git status # Verifica a branch atual
# Se não estiver na principal, mude:
git checkout master # ou git checkout main
git pull origin master # ou git pull origin main
feature/login-screen)
# Opção 1: Tradicional
git checkout -b feature/login-screen
# Opção 2: Moderna
git switch -c feature/login-screen
Confirmação: O terminal indicará a mudança.
git push -u origin feature/login-screen
O -u vincula a branch local à remota para futuros git push.
Agora você está na nova branch (feature/login-screen). É hora de começar a trabalhar e salvar seu progresso.
Cenário: Você fez commits na branch alternativa (feature/login-screen), mas o resultado não foi bom e precisa reverter ou descartar.
Use se a branch inteira está comprometida.
git checkout master # ou git checkout main
git branch -D feature/login-screen
-D (maiúsculo) força a deleção mesmo sem merge.
git push origin --delete feature/login-screen
Resultado: A branch feature/login-screen é removida local e remotamente.
Use se quer manter a branch, mas voltar a um commit específico.
⚠️ CUIDADO: Isso reescreve o histórico. Perigoso se a branch for compartilhada. Prefira git revert em branches colaborativas.
git log --oneline --graph
# Anote o hash do commit desejado (ex: a1b2c3d)
# Substitua 'a1b2c3d' pelo hash real
git reset --hard a1b2c3d
reset --hard descarta permanentemente alterações e commits após o hash especificado.
Use git reflog para encontrar hashes anteriores se precisar desfazer o reset.
# Use --force-with-lease (mais seguro que --force)
git push --force-with-lease origin feature/login-screen
Isso força o histórico remoto a espelhar o seu local reescrito.
Cenário: O trabalho na feature/login-screen está concluído, testado e pronto para ser incorporado à master/main.
git status (deve estar "working tree clean").git push origin feature/login-screen.git checkout master # ou git checkout main
git pull origin master # ou git pull origin main
git merge feature/login-screen
Automatic merge failed; fix conflicts....<<<<<<<, =======, >>>>>>>).git add <arquivo_resolvido1> ... ou git add ..git commit (o Git sugere uma mensagem padrão).git push origin master # ou git push origin main
# -d minúsculo só deleta se já mesclada
git branch -d feature/login-screen
git push origin --delete feature/login-screen
Adiciona revisão e é padrão em equipes.
feature/login-screen está completa e no GitHub (git push -u origin feature/login-screen), vá para a página do seu repositório no GitHub.# Volte para a branch principal
git checkout master # ou git checkout main
# Traga as alterações (incluindo o merge) do remoto
git pull origin master # ou git pull origin main
git branch -d feature/login-screen
Pratique os conceitos aprendidos com estes exercícios interativos. Clique em Ver Solução para conferir um exemplo.
Crie uma branch de feature, adicione um arquivo README.md com seu nome, commit e mescle na branch principal.
Crie duas branches que editam a mesma linha de README.md, faça merge para gerar conflito e resolva manualmente.
Para desfazer o último commit mantendo as alterações:
git reset --soft HEAD~1
Para desfazer e descartar as alterações:
git reset --hard HEAD~1
<<<<<<<git add . seguido de git commit1. Para visualizar o histórico:
git log --oneline
2. Para voltar a um commit específico:
git checkout [hash-do-commit]
Use o comando:
git checkout -b nome-da-branch
Ou na versão mais moderna:
git switch -c nome-da-branch
Objetivo: Salvar alterações temporárias sem fazer commit quando precisar mudar de branch.
git stash save "mensagem descritiva" # Salva alterações
git stash list # Lista stashes
git stash pop # Aplica e remove o último stash
git stash apply # Aplica sem remover
Conceito: Metodologia para organizar branches em projetos maiores.
main: Código em produçãodevelop: Base para desenvolvimentofeature/*: Novas funcionalidadeshotfix/*: Correções urgentesrelease/*: Preparação para releaseObjetivo: Praticar criação e merge de branches
Objetivo: Praticar resolução de conflitos
⚠️ Nunca compartilhe ou comite:
.gitignore para excluir arquivos sensíveisgit diff antes de enviá-losPratique comandos Git em um terminal simulado:
Explore repositórios reais para ver Git em ação:
Dominar o fluxo de status -> add -> commit é fundamental para usar o Git eficientemente. Combinado com o gerenciamento de branches, permite um desenvolvimento mais organizado e seguro. Pratique esses comandos no terminal para ganhar fluência.