Git é um sistema de controle de versão distribuído criado por Linus Torvalds em 2005 para o desenvolvimento do kernel Linux. GitHub é a plataforma de hospedagem de código mais popular do mundo, construída em cima do Git, lançada em 2008 e adquirida pela Microsoft em 2018.
Juntos, eles revolucionaram o desenvolvimento de software moderno: permitem colaboração em equipe, histórico completo de mudanças, branches para features, e integração contínua. Hoje são ferramentas obrigatórias para qualquer desenvolvedor, seja em projetos pessoais, open source ou empresas.
# Verificar se o Git está instalado git --version # Configurar nome e email (obrigatório para commits) git config --global user.name "Seu Nome" git config --global user.email "seu@email.com" # Ver configurações git config --list
Antes de usar os comandos, é essencial entender os conceitos principais do Git. Esses termos aparecem o tempo todo no dia a dia do desenvolvedor.
Um repositório Git é uma pasta que contém todos os arquivos do projeto + o histórico completo de todas as mudanças. Pode ser local (no seu computador) ou remoto (no GitHub).
# Criar um novo repositório local git init meu-projeto cd meu-projeto # Clonar um repositório existente do GitHub git clone https://github.com/usuario/nome-do-repo.git
Dica: Todo repositório Git tem uma branch principal (geralmente chamada de main ou master).
Um commit é um registro permanente das mudanças feitas nos arquivos. Cada commit tem uma mensagem que descreve o que foi alterado.
# Adicionar arquivos à staging area git add arquivo.txt git add . # adiciona todos os arquivos modificados # Criar o commit com mensagem git commit -m "feat: adiciona validação de email" # Commit com mensagem mais detalhada git commit -m "fix: corrige bug no login" -m "Descrição mais longa aqui"
Branches permitem criar linhas paralelas de desenvolvimento. Você pode trabalhar em uma nova funcionalidade sem afetar o código principal.
# Ver branches existentes git branch # Criar nova branch git branch feature/login # Mudar para a branch git checkout feature/login # Atalho: criar e mudar ao mesmo tempo git checkout -b feature/login
A Staging Area (ou Index) é uma área intermediária onde você prepara as mudanças antes de criar um commit. Permite controlar exatamente o que vai entrar no próximo commit.
# Adicionar arquivo específico git add index.html # Adicionar todos os arquivos modificados git add . # Remover da staging area git reset HEAD arquivo.txt
Um remote é um repositório remoto (normalmente no GitHub). Ele permite compartilhar seu código e colaborar com outras pessoas.
# Adicionar remote git remote add origin https://github.com/seuusuario/meuprojeto.git # Ver remotes configurados git remote -v # Renomear remote git remote rename origin upstream
Fork é uma cópia pessoal de um repositório no GitHub. É o primeiro passo para contribuir em projetos que você não é mantenedor.
Depois de fazer o fork, você pode clonar seu fork, fazer mudanças e abrir Pull Requests para o repositório original.
Clona (baixa) um repositório remoto para o seu computador, incluindo todo o histórico.
# Clonar repositório git clone https://github.com/usuario/nome-do-repo.git # Clonar em uma pasta específica git clone https://github.com/usuario/nome-do-repo.git minha-pasta
Adiciona mudanças à staging area e cria commits com mensagens descritivas.
# Adicionar mudanças git add . git add arquivo.txt # Criar commit git commit -m "feat: adiciona nova funcionalidade" # Commit com mensagem mais detalhada git commit -m "fix: corrige bug crítico" -m "Descrição completa da correção"
Enviar (push) suas mudanças para o GitHub e baixar (pull) mudanças de outras pessoas.
# Enviar commits locais para o remoto git push origin main # Primeira vez (define upstream) git push -u origin main # Baixar e mesclar mudanças do remoto git pull origin main # Apenas baixar (sem mesclar automaticamente) git fetch origin
Comandos de inspeção para entender o estado atual do repositório.
# Ver arquivos modificados, staged e não rastreados git status # Histórico de commits (mais legível) git log --oneline --graph --decorate # Ver mudanças em um arquivo específico git log --follow -- arquivo.txt # Ver o que mudou em um commit específico git show a1b2c3d
Gerenciamento de branches é essencial para que se trabalhe em features isoladas.
# Criar nova branch git branch feature/nova-funcionalidade # Mudar para a branch (checkout) git checkout feature/nova-funcionalidade # Criar + mudar de uma vez (atalho) git checkout -b feature/nova-funcionalidade # Deletar branch local (após merge) git branch -d feature/nova-funcionalidade # Ver todas as branches (incluindo remotas) git branch -a
Entender o fluxo completo de desenvolvimento com Git/GitHub é fundamental para trabalhar bem em equipe.
# 1. Criar pasta e inicializar Git mkdir meu-novo-projeto cd meu-novo-projeto git init # 2. Adicionar arquivos e primeiro commit echo "# Meu Projeto" > README.md git add . git commit -m "chore: inicializa projeto" # 3. Conectar ao GitHub git remote add origin https://github.com/seuuser/meu-novo-projeto.git git push -u origin main
# Manhã - atualizar código git checkout main git pull origin main # Criar branch para a tarefa git checkout -b feature/minha-tarefa # ... trabalhar no código ... git add . git commit -m "feat: implementa validação de CPF" # Final do dia - enviar para revisão git push origin feature/minha-tarefa
Depois crie um Pull Request no GitHub para revisão da equipe.
Conflitos acontecem quando duas pessoas editam a mesma linha de código. O Git avisa e você precisa resolver manualmente.
# Após git pull ou git merge aparecerão conflitos git status # mostra arquivos com conflito # Abra o arquivo no editor - procure por <<<<<<< # Resolva manualmente, depois: git add arquivo-conflito.txt git commit -m "fix: resolve conflito de merge"
O GitHub oferece ferramentas poderosas para trabalhar em equipe e contribuir com a comunidade open source.
Pull Request é o mecanismo principal de colaboração no GitHub. Permite propor mudanças, discutir código e fazer code review antes de mesclar na branch principal.
Passos típicos: Criar branch → Fazer commits → Push → Abrir PR no GitHub → Revisão da equipe → Aprovação → Merge
Dica: Sempre escreva uma boa descrição no PR explicando o "por quê" da mudança.
Issues são usadas para rastrear bugs, tarefas, melhorias e discussões. Podem ser vinculadas a Pull Requests e Projects.
# No GitHub web você cria Issues com labels, milestones e assign # Exemplo de labels comuns: bug, enhancement, documentation, help wanted, good first issue
O fluxo mais comum para contribuir em projetos que você não é mantenedor:
git clone https://github.com/SEUUSER/repo.gitgit checkout -b minha-contribuicaoO GitHub oferece muito mais que apenas hospedagem de código. Conheça os recursos que elevam sua produtividade.
GitHub Actions permite criar workflows automatizados de CI/CD diretamente no repositório. Executa testes, builds, deploys, etc. automaticamente.
# Exemplo básico de workflow (.github/workflows/ci.yml)
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm test
Projects é um sistema de gerenciamento de tarefas integrado ao GitHub. Pode ser usado como Kanban, roadmap ou lista de tarefas, com automações baseadas em Issues e PRs.
Muito usado por equipes para organizar sprints e backlog de produto.
Releases permitem publicar versões oficiais do seu projeto com notas de versão, assets (binários, instaladores) e changelogs automáticos baseados nos commits.
# Criar tag e release via linha de comando
git tag -a v1.0.0 -m "Primeira versão estável"
git push origin v1.0.0