Git & GitHub Sem Enrolação: 15 Snippets Práticos de Terminal
Explicação -> Código -> Resultado:
1. Iniciar repositório e conectar ao GitHub
Cria o repositório local, aponta para o GitHub e faz o primeiro envio da branch principal.
Bash
git init
git branch -M main
git remote add origin https://github.com/seu-usuario/seu-repositorio.git
git push -u origin main
Resultado: O diretório local passa a ser monitorado pelo Git e fica sincronizado com o repositório remoto.
2. Salvar alterações no histórico (add, commit, push)
Adiciona arquivos modificados à área de preparação, grava a mensagem de histórico e envia para o GitHub.
Bash
git add .
git commit -m "feat: adiciona tela de login"
git push origin main
Resultado: As alterações ficam salvas no histórico do projeto e atualizadas na nuvem.
3. Criar e alternar entre Branches (checkout / switch)
Permite desenvolver novas funcionalidades em paralelo sem afetar o código principal que está rodando.
Bash
# Cria e entra na nova branch
git checkout -b feature/nova-tela
# Para voltar para a branch principal depois:
git checkout main
Resultado: Você trabalha isolado na feature/nova-tela sem risco de quebrar a branch main.
4. Atualizar código local com o servidor (pull vs fetch)
O fetch apenas baixa as novidades para análise; o pull baixa e aplica as alterações diretamente no seu código local.
Bash
# Baixa as novidades sem alterar seus arquivos
git fetch origin
# Baixa e mescla automaticamente com sua branch atual
git pull origin main
Resultado: Seu ambiente local fica totalmente atualizado com as últimas edições feitas pela equipe.
5. Resolvendo conflitos de Merge
Acontece quando duas pessoas alteram a mesma linha. O Git marca o arquivo para você escolher qual versão manter.
Bash
# Se houver conflito após o merge, abra o arquivo e ajuste as marcas:
<<<<<<< HEAD
console.log("Sua alteração local");
=======
console.log("Alteração que veio do GitHub");
>>>>>>> main
# Após editar o arquivo fixando o código correto:
git add .
git commit -m "fix: resolve conflito de merge"
Resultado: O arquivo final fica consolidado com a versão correta e o merge é concluído.
6. Descartar alterações locais não salvas (restore)
Limpa modificações feitas nos arquivos locais voltando ao exato estado do último commit.
Bash
# Descarta alterações em um arquivo específico
git restore script.js
# Descarta todas as alterações não salvas no projeto inteiro
git restore .
Resultado: Reverte rascunhos ou testes indesejados sem precisar apagar código manualmente.
7. Desfazer commits (reset vs revert)
O reset --soft desfaz o commit mantendo o código no seu editor. O revert cria um novo commit invertendo as alterações.
Bash
# Volta 1 commit atrás mantendo suas alterações salvas na máquina
git reset --soft HEAD~1
# Cria um novo commit seguro desfazendo o commit informado (ideal para repositórios públicos)
git revert a1b2c3d
Resultado: Corrigem erros de envios anteriores preservando a integridade do repositório.
8. Ignorar arquivos sensíveis com .gitignore
Evita que pastas pesadas (node_modules) ou arquivos com senhas (.env) subam para o GitHub.
Bash
# Crie o arquivo .gitignore na raiz do projeto e adicione:
node_modules/
.env
dist/
*.log
Resultado: O Git ignora automaticamente esses arquivos em comandos como git add ..
9. Salvar alterações temporárias com git stash
Guarda seu trabalho em andamento em um “porta-objetos” para que você possa trocar de branch sem fazer commit.
Bash
# Salva as alterações pendentes no stash
git stash
# Troque de branch, faça o que precisa e depois recupere seu trabalho:
git stash pop
Resultado: Seu código volta ao estado em que estava sem precisar gerar commits incompletos no histórico.
10. Estrutura base para um README.md de impacto
Arquivo de documentação exibido na página principal do repositório no GitHub.
Markdown
# Nome do Projeto
> Breve descrição do que a aplicação faz.
## 🚀 Como executar
```bash
npm install
npm run dev
🛠️ Tecnologias
- JavaScript
- Node.js
**Resultado:** Apresenta o projeto de forma clara e profissional para recrutadores e outros desenvolvedores.
---
### 11. Aplicando alterações limpas com `git rebase`
Reorganiza o histórico alinhando seus commits após a branch principal, mantendo uma linha do tempo linear.
```bash
git checkout feature/sua-branch
git rebase main
Resultado: Evita a criação de commits desnecessários de “Merge branch ‘main'” no seu histórico.
12. Criar Pull Request (PR) via linha de comando (gh cli)
Permite abrir a solicitação de análise de código no GitHub sem sair do terminal.
Bash
# Envia a branch e abre o PR via GitHub CLI
git push origin feature/nova-tela
gh pr create --title "Adiciona nova tela" --body "Detalhes das alterações feitas."
Resultado: O Pull Request é criado automaticamente no repositório do GitHub para revisão.
13. Configurando autenticação por chave SSH
Elimina a necessidade de digitar usuário e senha a cada git push ou git pull.
Bash
# Gera a chave SSH
ssh-keygen -t ed25519 -C "seu-email@dominio.com"
# Exibe a chave pública para copiar e colar nas configurações do GitHub:
cat ~/.ssh/id_ed25519.pub
Resultado: O terminal passa a se autenticar com o GitHub de forma criptografada e automática.
14. Criando e enviando marcas de versão com git tag
Registra pontos específicos no histórico do projeto para indicar versões estáveis (releases).
Bash
# Cria uma tag anotada de versão
git tag -a v1.0.0 -m "Versão 1.0.0 pronta para produção"
# Envia a tag para o GitHub
git push origin v1.0.0
Resultado: O GitHub gera automaticamente um pacote de download da release na aba “Releases”.
15. Recuperando commits “perdidos” com git reflog
Mostra o histórico completo de ações do terminal, permitindo resgatar commits excluídos por engano em um reset.
Bash
# Lista todas as ações do repositório
git reflog
# Recupere o estado do código usando o código identificador retornado (ex: HEAD@{2})
git reset --hard HEAD@{2}
Resultado: Restaura instantaneamente o código para o ponto exato antes do erro ser cometido.
