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
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 commit
1. 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á-losDominar 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.