para Times de Desenvolvimento
"Amadores escrevem código. Profissionais versionam código."
https://www.youtube.com/watch?v=VPu6xm3W8H0
Ao final deste treinamento, todos os participantes serão capazes de:
- Entender a diferença entre Git e GitHub
- Criar e versionar projetos localmente
- Trabalhar com Branches
- Realizar Commits de forma profissional
- Ignorar arquivos com
.gitignore - Sincronizar código com GitHub
- Criar Pull Requests (PR)
- Fazer Code Review
- Resolver conflitos simples
- Entender como Git e GitHub potencializam o uso de IA no desenvolvimento moderno
| # | Tópico | # | Tópico |
|---|---|---|---|
| 1 | O que é Git | 16 | Push |
| 2 | O que é GitHub | 17 | Clone |
| 3 | Git vs GitHub | 18 | Pull |
| 4 | Fluxo de trabalho | 19 | Fetch |
| 5 | Instalando o Git | 20 | Fluxo de branches |
| 6 | Primeiros passos | 21 | Padrão de commits |
| 7 | Primeiro repositório | 22 | Pull Request |
| 8 | Ciclo do Git | 23 | Fluxo completo de PR |
| 9 | Primeiro commit | 24 | Boas práticas de PR |
| 10 | .gitignore 🆕 | 25 | Git + IA |
| 11 | Principais comandos | 26 | Como usar IA com Git |
| 12 | Branches | 27 | GitHub Trending |
| 13 | Merge | 28 | Por que olhar o Trending |
| 14 | Conflitos | 29 | Laboratório prático |
| 15 | Conectando ao GitHub | 30 | Resumo final |
Git é um Sistema de Controle de Versão Distribuído.
Em termos simples:
Git é uma máquina do tempo para código.
Ele permite:
- Salvar versões do projeto
- Voltar para versões anteriores
- Trabalhar em equipe
- Criar funcionalidades sem quebrar produção
- Auditar quem alterou o quê
Imagine um arquivo sistema.php.
Você altera o arquivo hoje. Amanhã ele quebra.
Com Git você consegue voltar exatamente para o estado anterior (antes da quebra).
GitHub é uma plataforma online que hospeda repositórios Git.
GitHub NÃO substitui Git. GitHub utiliza Git.
| Git | GitHub |
|---|---|
| Microsoft Word | OneDrive ou Google Drive |
| Banco de Dados | Servidor onde o banco está hospedado |
| Git | GitHub |
|---|---|
| Ferramenta | Plataforma |
| Funciona offline | Funciona online |
| Controle de versão | Compartilhamento |
| Instalado na máquina | Hospedado na nuvem |
| Gratuito e Open Source | Serviço baseado em Git |
flowchart TD
A([Desenvolvedor]) --> B[Cria Branch]
B --> C[Desenvolve]
C --> D[Commit]
D --> E[Push]
E --> F[Pull Request]
F --> G[Code Review]
G --> H[Merge]
H --> I([Produção])
O git está disponível através do site https://git-scm.com/install/.
Verificar instalação:
git --versionExemplo de saída:
git version 2.52.0Configurar nome:
git config --global user.name "Seu Nome"
git config --global user.name # verificarConfigurar email:
git config --global user.email "email@empresa.com"
git config --global user.email # verificarListar todas as configurações:
git config --listmkdir projeto-git # criar pasta
cd projeto-git # entrar
git init # inicializar GitResultado:
Initialized empty Git repositoryflowchart LR
A[Working Directory] -->|git add| B[Staging Area]
B -->|git commit| C[(Repositório Local)]
C -->|git push| D[(GitHub)]
Criar arquivo e verificar status:
touch README.md
git statusAdicionar ao staging:
git add README.md # arquivo específico
git add . # tudoCriar o commit:
git commit -m "Primeiro commit"Nem todo arquivo deve ir para o repositório.
O arquivo .gitignore diz ao Git quais arquivos e pastas devem ser ignorados — ou seja, nunca rastreados nem enviados ao GitHub.
Evita versionar:
- Dependências →
node_modules/,vendor/ - Segredos →
.env, senhas, tokens, chaves - Arquivos gerados →
build/,dist/,*.log - Configuração de IDE →
.vscode/,.idea/ - Arquivos do sistema →
.DS_Store,Thumbs.db
touch .gitignore| Padrão | Significado |
|---|---|
arquivo.log |
Ignora um arquivo específico |
*.log |
Ignora todos os arquivos .log |
pasta/ |
Ignora uma pasta inteira |
!importante.log |
Exceção: não ignora este arquivo |
# comentário |
Linha de comentário |
Node.js
node_modules/
.env
dist/
*.logPHP / Laravel
/vendor/
.env
storage/*.logPython
__pycache__/
*.pyc
venv/
.envSe o arquivo já foi commitado, adicioná-lo ao .gitignore não o remove. É preciso tirá-lo do versionamento:
git rm --cached arquivo.env
git commit -m "chore: remove arquivo do versionamento"Para ignorar arquivos em todos os projetos da máquina:
git config --global core.excludesfile ~/.gitignore_globalUse modelos prontos por linguagem/framework:
Mostra o estado atual. Uso diário.
git statusAdiciona alterações ao staging.
git add . # tudo
git add arquivo.php # específicoCria um snapshot.
git commit -m "Cadastro de clientes"Histórico.
git log
git log --oneline # modo resumidoMostra alterações.
git diffDesfaz alterações.
git restore arquivo.phpRemove arquivo.
git rm arquivo.phpRenomeia arquivo.
git mv antigo.php novo.phpUma branch é uma linha paralela de desenvolvimento.
git branch # listar
git branch feature/login # criar
git checkout feature/login # trocar
git checkout -b feature/login # criar e trocar
git switch -c feature/login # alternativa moderna
git checkout main # voltar para mainUnir duas branches.
git merge feature/logingitGraph
commit
commit
branch feature/login
checkout feature/login
commit
commit
checkout main
merge feature/login
Ocorrem quando duas pessoas alteram a mesma linha.
<<<<<<< HEAD
Nome Atual
=======
Novo Nome
>>>>>>> featureComo resolver:
- Editar manualmente o arquivo
- Salvar
- Commitar
git add .
git commit- Criar repositório no GitHub
- Copiar a URL, por exemplo:
https://github.com/empresa/projeto.git
git remote add origin URL # adicionar remoto
git remote -v # verificarEnviar para o GitHub.
git push -u origin main # primeira vez
git push # próximas vezesBaixar um projeto existente.
git clone https://github.com/empresa/projeto.gitBaixar e aplicar alterações.
git pull
git pull origin main # fluxo recomendadoBuscar alterações sem aplicar. Muito utilizado antes de um merge.
git fetchPadrão recomendado:
main
develop
feature/*
hotfix/*
release/*Exemplos: feature/login, feature/cadastro-cliente, hotfix/correcao-pix, release/v1.3.0.
gitGraph
commit
branch develop
checkout develop
commit
branch feature/login
checkout feature/login
commit
commit
checkout develop
merge feature/login
checkout main
merge develop tag: "v1.3.0"
❌ Evite:
ajustes
correção
teste
update✅ Prefira:
feat: adiciona login por Google
fix: corrige cálculo de comissão
refactor: simplifica regra de descontos
docs: atualiza README
test: adiciona testes de integraçãoUma solicitação de merge. Permite:
- Revisão
- Discussão
- Auditoria
- Aprovação
flowchart TD
A[Atualizar main] --> B[Criar branch]
B --> C[Desenvolver]
C --> D[Commit]
D --> E[Push]
E --> F[Abrir Pull Request]
F --> G[Code Review]
G --> H{Aprovado?}
H -->|Não| C
H -->|Sim| I[Merge]
I --> J[Deletar branch]
Passo a passo:
# 1. Atualizar main
git checkout main
git pull
# 2. Criar branch
git checkout -b feature/login
# 3. Desenvolver
# ...
# 4. Commit
git add .
git commit -m "feat: adiciona autenticação"
# 5. Push
git push origin feature/login- Abrir Pull Request no GitHub (Compare & Pull Request)
- Code Review — analisar código, performance, segurança e padrões
- Approve Changes
- Merge Pull Request
- Delete Branch
| Tamanho da PR | Recomendação |
|---|---|
| Até 150 linhas | ✅ Ideal |
| Até 300 linhas | 🟡 Aceitável |
| Acima disso | 🔴 Quebrar em PRs menores |
Sempre incluir: Objetivo, Impacto, Evidências e Screenshots.
A IA aumentou a velocidade de geração de código. Mas também aumentou:
- Bugs
- Código duplicado
- Dívida técnica
Por isso, Git se tornou ainda mais importante.
flowchart TD
A[IA gera código] --> B[Desenvolvedor valida]
B --> C[Commit pequeno]
C --> D[Pull Request]
D --> E[Code Review]
E --> F[Merge seguro]
Ferramentas populares:
Copilot · ChatGPT · Claude · Gemini · Cursor · WindsurfFluxo ideal:
IA gera → Você revisa → Commit pequeno → PR pequeno → Merge seguro
O GitHub Trending mostra:
- Projetos populares
- Novas tecnologias
- Frameworks emergentes
- Ferramentas promissoras
Atalhos úteis:
- Python: https://github.com/trending/python?since=daily
- PHP: https://github.com/trending/php?since=daily
Para aprender arquitetura, padrões e descobrir antes do mercado:
- Frameworks e bibliotecas
- Ferramentas DevOps
- Agentes de IA
- MCP Servers
- SDKs
| # | Exercício | Objetivo |
|---|---|---|
| 1 | Criar repositório local | git init → git add → git commit |
| 2 | Criar branch | git checkout -b feature/nome |
| 3 | Criar .gitignore |
Ignorar .env e node_modules/ |
| 4 | Realizar merge | git merge |
| 5 | Criar conflito proposital | Resolver manualmente |
| 6 | Repositório no GitHub | push · pull · clone |
| 7 | Criar Pull Request real | Branch → Commit → Push → PR → Review → Approve → Merge |
Todo desenvolvedor deve dominar:
✅ git init |
✅ git status |
✅ git add |
✅ git commit |
✅ git log |
✅ git diff |
✅ .gitignore |
✅ git branch |
✅ git checkout |
✅ git merge |
✅ git clone |
✅ git pull |
✅ git push |
✅ Pull Request | ✅ Code Review |
| ✅ Resolução de Conflitos | ✅ GitHub Trending |
"Amadores escrevem código. Profissionais versionam código."
Autor do Treinamento: Icaro William
Especialidade: Arquiteto de Software (há mais de 20 anos)
Assunto: Git vs GitHub
Mais sobre: https://youtube.com/@tiojobs