GitHub é a maior plataforma web para hospedagem de repositórios Git, desenvolvimento colaborativo e automação de processos, pertencente à Microsoft. Ela fornece não apenas armazenamento de código com controle de versão, mas também um conjunto completo de ferramentas de gerenciamento de projetos: Issue Tracking, Pull Requests com revisão de código, Actions para CI/CD e Wiki para documentação. De acordo com GitHub, 2024, a plataforma conta com mais de 100 milhões de desenvolvedores e 420 milhões de repositórios.
Pontos principais
GitHub é um serviço web para armazenar e colaborar em repositórios Git, fundado em 2008 por Tom Preston-Werner, Chris Wanstrath e PJ Hyett. Em 2018, a empresa foi adquirida pela Microsoft por 7,5 bilhões de dólares. A plataforma fornece uma interface web para todas as operações do Git, adicionando funcionalidades sociais: forks, estrelas, inscrições, revisão de código e um sistema de integração contínua integrado.
A principal diferença entre o GitHub e seus concorrentes é seu ecossistema aberto e a maior comunidade de desenvolvedores. O GitHub hospeda os códigos-fonte do Android, Kubernetes, React, Swift, Kotlin e milhares de outros projetos open-source. Isso torna a plataforma não apenas uma ferramenta de armazenamento de código, mas também uma rede social para desenvolvedores: você pode seguir projetos, discutir alterações e contribuir através de pull requests.
De acordo com um relatório da Microsoft (2024), mais de 10 milhões de novos Pull Requests passam pelo GitHub diariamente, e o número de usuários ativos mensais ultrapassou 100 milhões. A plataforma suporta mais de 500 linguagens de programação, detecção automática de idioma por extensão de arquivo e realce de sintaxe de código.
A funcionalidade do GitHub vai muito além da simples hospedagem Git. A plataforma fornece: GitHub Actions — um sistema CI/CD integrado; GitHub Packages — um registro de pacotes e contêineres; GitHub Codespaces — ambientes de desenvolvimento em nuvem baseados no VS Code; GitHub Discussions — um fórum para a comunidade; GitHub Security — Dependabot para atualizações automáticas de dependências e varredura de vulnerabilidades; GitHub Copilot — um assistente de IA para escrever código.
Para organizações, o GitHub oferece o GitHub Enterprise — uma versão empresarial com hospedagem própria (GitHub Enterprise Server) ou implantação em nuvem (GitHub Enterprise Cloud). Os recursos empresariais incluem autenticação SAML/SSO, registro de auditoria, políticas de segurança de repositórios e SLA de disponibilidade de 99,95%. A versão Enterprise é usada por empresas como Google, Apple e Airbnb.
Uma funcionalidade importante do GitHub é o GitHub CLI (gh), que permite realizar todas as operações da plataforma a partir da linha de comando sem usar a interface web. Com o gh, você pode criar repositórios, gerenciar Issues, revisar Pull Requests e executar Actions diretamente do terminal, acelerando o trabalho de desenvolvedores acostumados com a linha de comando.
| Funcionalidade | Propósito | Disponibilidade |
|---|---|---|
| Actions | CI/CD e automação | Grátis 2000 min/mês |
| Codespaces | IDE na nuvem baseada no VS Code | Pago, 60 h/mês grátis |
| Packages | Hospedagem de pacotes e imagens Docker | Grátis 500 MB |
| Dependabot | Atualizações automáticas de dependências | Grátis para repositórios públicos |
| Pages | Hospedagem de sites estáticos | Grátis |
Pull Request (PR) é o principal mecanismo para fazer alterações em um projeto no GitHub. Um desenvolvedor cria um branch com alterações, publica-o no GitHub e envia uma solicitação de merge (Pull Request) para o branch principal. Outros participantes do projeto veem a diferença (diff) entre os branches, podem deixar comentários em linhas específicas de código, sugerir alterações e aprovar ou rejeitar a solicitação.
O processo de revisão de código no GitHub é construído em torno dos PRs. Cada comentário é anexado a uma linha específica do diff e pode ser de três tipos: Comment (comentário normal), Request Changes(requer correções) e Approve(aprovação). Após fazer as alterações, o autor atualiza o PR com um novo commit e o processo de revisão se repete. Quando todas as objeções são resolvidas e o PR é aprovado, as alterações são mescladas no branch de destino.
# Criar um branch de funcionalidade e fazer push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# Criar um PR via CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# Visualizar e mesclar um PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
O GitHub suporta regras de proteção de branches: você pode impedir pushes diretos para o main, exigir um número obrigatório de aprovações antes do merge, executar verificações do Actions e exigir que o branch esteja atualizado antes da mesclagem. A proteção de branches é configurada em Settings → Branches e é uma prática obrigatória para projetos de produção, evitando a introdução acidental de código instável no branch principal.
GitHub Actions é uma plataforma CI/CD integrada que permite automatizar fluxos de trabalho diretamente no repositório. Os fluxos de trabalho são descritos em arquivos YAML localizados no diretório .github/workflows/. Cada fluxo de trabalho consiste em um ou mais jobs que são executados em runners — máquinas virtuais com Linux, Windows ou macOS.
O Actions suporta um modelo orientado a eventos: os fluxos de trabalho são acionados ao fazer push, criar um PR, publicar um release, em um agendamento ou via webhook. Isso permite automatizar a compilação, execução de testes, análise estática de código, publicação em lojas de aplicativos e implantação em servidores sem intervenção do desenvolvedor. Abaixo está um exemplo de fluxo de trabalho para um projeto Android:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
O ecossistema do Actions inclui mais de 20.000 ações prontas no GitHub Marketplace. Ações populares: checkout (clonar repositório), setup-java/setup-node/setup-python (configuração de ambiente), upload-artifact (salvar artefatos de compilação), cache (cache de dependências para acelerar), slack-notify (enviar notificações para o Slack). O Actions também suporta compilações matriciais — execução simultânea em múltiplas versões de SO ou linguagens.
Issues é um sistema integrado de rastreamento de tarefas no GitHub. Cada Issue tem um título, descrição, etiquetas, responsáveis, marcos e Pull Requests vinculados. As Issues podem ter modelos — diferentes modelos são usados para relatórios de bugs, solicitações de funcionalidades ou perguntas, que são inseridos automaticamente ao criar.
GitHub Projects (anteriormente Projects Beta) é uma ferramenta de gerenciamento de projetos baseada em quadros, semelhante ao Jira e Trello. O Projects suporta campos personalizados (status, prioridade, sprint), vinculação com Issues e Pull Requests, automação de movimento de cartões quando o status da tarefa muda e análise na forma de gráfico de burndown. O Projects está disponível em dois modos: Table (visão em tabela) e Board (quadro kanban).
Para gerenciamento de releases, o GitHub fornece Milestones — grupos de Issues e PRs unidos por um objetivo comum com prazo. Cada marco mostra o progresso: quantas tarefas estão abertas, quantas estão fechadas e se o prazo está sendo cumprido. Os marcos se integram com Releases — ao publicar um release, você pode vinculá-lo a um marco e gerar automaticamente um CHANGELOG com base nas Issues fechadas.
GitHub Pages é hospedagem gratuita para sites estáticos que publica automaticamente o conteúdo do repositório em https://username.github.io/repository. O Pages suporta HTML, CSS, JavaScript e geradores estáticos: Jekyll (integrado), Hugo, Next.js (exportação) e MkDocs. A configuração inclui escolher o branch e diretório para publicação, bem como suporte a domínio personalizado.
Para documentação técnica, o GitHub fornece Wiki — um sistema wiki integrado que também é armazenado como um repositório Git. O Wiki suporta Markdown e permite editar páginas tanto através da interface web quanto localmente via push para o repositório wiki. Cada página Wiki tem seu próprio histórico de alterações, o que é conveniente para documentar API, arquitetura e processos do projeto.
A combinação de GitHub Pages + Jekyll é uma solução popular para sites de documentação. O Jekyll converte automaticamente arquivos Markdown em páginas HTML estáticas, suporta temas, navegação e busca. Por exemplo, a documentação do Android Developers costumava usar Jekyll no GitHub Pages e agora usa uma plataforma interna, mas milhares de projetos open-source continuam usando essa combinação para seus sites.
GitHub CLI (gh) permite realizar todas as operações da plataforma através da linha de comando: criar repositórios, gerenciar Issues, visualizar e aprovar Pull Requests, executar Actions. O comando gh repo create my-project --public cria um repositório remoto e o vincula ao local, enquanto gh pr create cria um Pull Request a partir do branch atual. O CLI acelera o trabalho de desenvolvedores que preferem o terminal à interface web.
GitHub REST API e GraphQL API fornecem acesso programático a todas as funcionalidades da plataforma: criar Issues, gerenciar usuários, obter estatísticas e gerenciar Actions. A GraphQL API é preferível para consultas complexas, pois permite obter apenas os campos necessários em uma única solicitação. O limite de taxa para REST API é de 5000 solicitações por hora para usuários autenticados. A API é amplamente usada para integrar o GitHub com sistemas CI externos e ferramentas internas de DevOps.
GitHub Gist é um serviço para publicar fragmentos de código sem criar um repositório completo. O Gist suporta realce de sintaxe, incorporação em sites externos e histórico de versões. Cada Gist pode ser público (visível em buscas) ou secreto (acessível apenas por link). O Gist é usado para compartilhar rapidamente configurações, logs e exemplos de código na correspondência da equipe, e também como alternativa ao Pastebin para desenvolvedores.
Perguntas frequentes
GitHub foca na comunidade aberta e funcionalidades sociais (forks, estrelas). O GitLab oferece CI/CD integrado mais poderoso e hospedagem autogerenciada sem limitações de minutos do Actions.
GitHub Team custa $4 por usuário por mês e oferece repositórios privados ilimitados, proteção de branches e Actions (3000 minutos). O plano gratuito é adequado para pequenos projetos open-source.
Ao criar um repositório, selecione Private em vez de Public. Em repositórios privados, o código só é visível para colaboradores convidados. No plano gratuito, repositórios privados estão disponíveis com limite de até 3 colaboradores.
GitHub Copilot é um assistente de IA baseado no OpenAI Codex que oferece autocompletar código em tempo real. Funciona no VS Code, JetBrains e Neovim, suportando todas as linguagens de programação populares.
Vá em Settings → Danger Zone → Delete this repository. A exclusão é irreversível — todos os commits, Issues e Wiki serão excluídos sem possibilidade de recuperação. Certifique-se de ter um backup antes.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também