Colaboração com o GitHub
Domine pull requests, issues e discussions para colaborar de forma eficiente com outros desenvolvedores.
Colaboração com o GitHub
O GitHub revoluciona a colaboração no desenvolvimento de software. Este tutorial ensinará você a usar as ferramentas colaborativas do GitHub: pull requests, issues, discussions e muito mais para trabalhar com eficiência em equipe.
Visão geral da colaboração
Issues: gerenciamento de tarefas e bugs
O que é uma Issue?
Uma issue é um ticket para:
- Reportar bugs
- Propor funcionalidades
- Fazer perguntas
- Organizar tarefas
Criar uma Issue
# Template d'issue pour bug
**Description du bug**
Description claire et concise du problème.
**Étapes pour reproduire**
1. Aller à '...'
2. Cliquer sur '....'
3. Faire défiler jusqu'à '....'
4. Voir l'erreur
**Comportement attendu**
Description de ce qui devrait se passer.
**Captures d'écran**
Si applicable, ajouter des captures d'écran.
**Environnement:**
- OS: [ex: iOS]
- Navigateur: [ex: chrome, safari]
- Version: [ex: 22]
Gerenciamento de Issues
# Avec GitHub CLI
gh issue create --title "Bug dans le login" --body "Description détaillée"
gh issue list
gh issue view 123
gh issue close 123
# Assigner une issue
gh issue edit 123 --add-assignee username
# Ajouter des labels
gh issue edit 123 --add-label bug,priority-high
Labels e organização
Labels padrão:
bug: algo não está funcionandoenhancement: nova funcionalidade ou solicitaçãodocumentation: melhorias na documentaçãogood first issue: bom para novos contribuidoreshelp wanted: ajuda adicional desejada
Labels personalizados:
priority-high (rouge)
priority-medium (orange)
priority-low (vert)
frontend (bleu)
backend (violet)
Pull Requests: propor modificações
Fluxo de trabalho de Pull Request
# 1. Fork du dépôt (via l'interface GitHub)
# 2. Clone de votre fork
git clone https://github.com/VOTRE-USERNAME/projet.git
cd projet
# 3. Créer une branche
git checkout -b feature/nouvelle-fonctionnalite
# 4. Développer et commiter
echo "nouveau code" > feature.js
git add feature.js
git commit -m "feat: add new feature"
# 5. Pousser la branche
git push origin feature/nouvelle-fonctionnalite
# 6. Créer la Pull Request via l'interface GitHub
Anatomia de uma Pull Request
# Template de Pull Request
## Description
Résumé des changements et motivation.
## Type de changement
- [ ] Bug fix (changement non-breaking qui corrige un problème)
- [ ] Nouvelle fonctionnalité (changement non-breaking qui ajoute une fonctionnalité)
- [ ] Breaking change (fix ou feature qui casserait la fonctionnalité existante)
- [ ] Documentation
## Comment cela a-t-il été testé ?
Description des tests effectués.
## Checklist:
- [ ] Mon code suit les guidelines du projet
- [ ] J'ai effectué une auto-review de mon code
- [ ] J'ai commenté mon code, particulièrement dans les zones difficiles
- [ ] J'ai fait les changements correspondants à la documentation
- [ ] Mes changements ne génèrent pas de nouveaux warnings
- [ ] J'ai ajouté des tests qui prouvent que mon fix est efficace
- [ ] Les tests nouveaux et existants passent localement
Comandos do GitHub CLI para PRs
# Créer une PR
gh pr create --title "Add new feature" --body "Description détaillée"
# Lister les PR
gh pr list
# Voir une PR
gh pr view 123
# Checkout d'une PR pour test
gh pr checkout 123
# Merger une PR
gh pr merge 123 --merge # ou --squash ou --rebase
# Fermer une PR
gh pr close 123
Code Review: revisão de código
Processo de Review
- Leitura do código: entender as mudanças
- Teste local: verificar se funciona
- Feedback construtivo: comentários úteis
- Aprovação ou solicitação de mudanças
Tipos de comentários
# Commentaire général
Cette approche est intéressante, mais avez-vous considéré utiliser X au lieu de Y ?
# Suggestion de code
```suggestion
function calculateTotal(items) {
return items.reduce((sum, item) => sum + item.price, 0);
}
Question
Pourquoi avez-vous choisi cette méthode plutôt que l’API native ?
Nitpick (détail mineur)
nit: Espace manquant après la virgule
### Boas práticas de Review
**Para o reviewer:**
- Seja construtivo e respeitoso
- Explique o "porquê" das suas sugestões
- Aprove rapidamente as boas PRs
- Teste as mudanças importantes
**Para o autor:**
- Responda aos comentários
- Implemente as sugestões pertinentes
- Peça esclarecimentos se necessário
- Agradeça pelas reviews
## Forks e contribuições
### Fork de um projeto
```bash
# 1. Fork via l'interface GitHub
# 2. Clone de votre fork
git clone https://github.com/VOTRE-USERNAME/projet-fork.git
cd projet-fork
# 3. Ajouter le dépôt original comme remote
git remote add upstream https://github.com/AUTEUR-ORIGINAL/projet.git
# 4. Vérifier les remotes
git remote -v
Sincronizar com o upstream
# Récupérer les changements de l'upstream
git fetch upstream
# Merger les changements dans votre main
git checkout main
git merge upstream/main
# Pousser vers votre fork
git push origin main
Fluxo de contribuição
# 1. Synchroniser avec upstream
git fetch upstream
git checkout main
git merge upstream/main
# 2. Créer une branche pour votre contribution
git checkout -b fix/bug-description
# 3. Développer
# ... modifications ...
# 4. Commiter
git add .
git commit -m "fix: resolve issue with user authentication"
# 5. Pousser vers votre fork
git push origin fix/bug-description
# 6. Créer une Pull Request vers l'upstream
GitHub Discussions
Tipos de discussões
- Q&A: perguntas e respostas
- Ideas: propostas de ideias
- General: discussões gerais
- Show and tell: compartilhar realizações
Criar uma discussão
# Exemple de discussion "Ideas"
**Titre :** Ajouter un mode sombre à l'application
**Description :**
Je propose d'ajouter un mode sombre pour améliorer l'expérience utilisateur,
particulièrement pour l'utilisation nocturne.
**Avantages :**
- Réduction de la fatigue oculaire
- Économie de batterie sur les écrans OLED
- Tendance moderne du design
**Questions :**
- Quelle palette de couleurs utiliser ?
- Faut-il un toggle automatique basé sur l'heure ?
- Comment gérer la compatibilité avec les thèmes existants ?
Gerenciamento de projetos com o GitHub
GitHub Projects
# Organisation d'un projet
Colonnes typiques :
- Backlog
- To Do
- In Progress
- In Review
- Done
# Automatisation
- Déplacer automatiquement les cartes selon les événements
- Lier les issues et PR aux cartes
- Filtrer par assigné, label, milestone
Milestones
# Organiser les issues par version/sprint
Milestone: Version 2.0
- Issue #45: Ajouter authentification OAuth
- Issue #46: Améliorer les performances
- Issue #47: Corriger le bug de navigation
Due date: 2024-03-15
Progress: 2/3 issues fermées (67%)
Notificações e menções
Sistema de notificações
# Types de notifications
- Mentions (@username)
- Assignations
- Reviews demandées
- Commentaires sur vos PR/Issues
- Activité sur les dépôts watchés
# Gestion des notifications
Settings > Notifications
- Email notifications
- Web notifications
- Mobile notifications
Menções e equipes
# Mentionner un utilisateur
@username pouvez-vous regarder cette PR ?
# Mentionner une équipe
@org/frontend-team cette PR concerne l'interface utilisateur
# Mentionner dans un commit
git commit -m "fix: resolve login issue
Fixes #123
cc @maintainer-team"
Segurança e permissões
Níveis de acesso
- Read: clonar e ler
- Triage: gerenciar issues e PRs
- Write: push e merge
- Maintain: gerenciar o repositório sem acesso destrutivo
- Admin: acesso completo
Branch protection
# Règles de protection pour main
- Require pull request reviews before merging
- Require status checks to pass before merging
- Require branches to be up to date before merging
- Require conversation resolution before merging
- Restrict pushes that create files larger than 100MB
Exercícios práticos
Exercício 1: primeira contribuição
# 1. Fork un projet open source simple
# 2. Clone votre fork
git clone https://github.com/VOTRE-USERNAME/projet-fork.git
# 3. Créer une branche
git checkout -b docs/improve-readme
# 4. Améliorer la documentation
echo "## Installation\n\n\`\`\`bash\nnpm install\n\`\`\`" >> README.md
# 5. Commiter et pousser
git add README.md
git commit -m "docs: improve installation instructions"
git push origin docs/improve-readme
# 6. Créer une Pull Request
Exercício 2: gerenciamento de issues
# 1. Créer plusieurs issues dans votre dépôt
gh issue create --title "Bug: Login ne fonctionne pas" --label bug
gh issue create --title "Feature: Ajouter mode sombre" --label enhancement
gh issue create --title "Docs: Améliorer le README" --label documentation
# 2. Assigner et organiser
gh issue edit 1 --add-assignee VOTRE-USERNAME
gh issue edit 2 --add-label "good first issue"
# 3. Lier une PR à une issue
git checkout -b fix/login-bug
# ... développement ...
git commit -m "fix: resolve login authentication issue
Fixes #1"
Exercício 3: Code Review
# 1. Créer une PR avec du code à améliorer
echo "function add(a,b){return a+b}" > math.js
git add math.js
git commit -m "add math function"
git push origin feature/math
# 2. Créer la PR et demander une review
gh pr create --title "Add math utilities" --reviewer ami-reviewer
# 3. Répondre aux commentaires et améliorer
echo "function add(a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Both arguments must be numbers');
}
return a + b;
}" > math.js
git add math.js
git commit -m "improve: add input validation to math function"
git push origin feature/math
Ferramentas e integrações
GitHub Desktop
Interface gráfica para:
- Visualizar as mudanças
- Criar commits
- Gerenciar branches
- Sincronizar com o GitHub
VS Code + GitHub
Extensões úteis:
- GitHub Pull Requests and Issues
- GitLens
- GitHub Copilot
Integrações de CI/CD
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- run: npm install
- run: npm test
Boas práticas colaborativas
Comunicação
- Seja claro nas suas descrições
- Use os templates para issues e PRs
- Responda rapidamente às reviews
- Documente suas decisões importantes
Organização
- Use labels consistentes
- Organize com milestones
- Atribua as responsabilidades
- Feche as issues resolvidas
Código
- Commits atômicos e descritivos
- Branches curtas e focadas
- Testes para as novas funcionalidades
- Documentação atualizada
Solução de problemas colaborativos
Conflitos de merge em uma PR
# 1. Synchroniser avec la branche principale
git fetch origin
git checkout feature-branch
git merge origin/main
# 2. Résoudre les conflits
# ... édition manuelle ...
# 3. Commiter la résolution
git add .
git commit -m "resolve merge conflicts"
git push origin feature-branch
PR bloqueada pelos checks
# Vérifier les status checks
gh pr checks
# Relancer les checks si nécessaire
gh pr ready --undo # marquer comme draft
gh pr ready # marquer comme ready
Recursos adicionais
Documentação do GitHub
Ferramentas de terceiros
- Conventional Commits: padrão para mensagens
- Semantic Release: automação de versões
- All Contributors: reconhecimento dos contribuidores
Conclusão
A colaboração no GitHub vai muito além do simples compartilhamento de código. É um ecossistema completo que facilita a comunicação, a organização e a qualidade do desenvolvimento de software. Dominar essas ferramentas tornará você mais eficiente em seus projetos colaborativos.
No próximo tutorial, aprofundaremos a resolução de conflitos, um aspecto crucial da colaboração em equipe.
Tempo de leitura estimado: 25 minutos
Nível: Intermediário
Etapa anterior: Introdução ao GitHub
Próxima etapa: Resolução de conflitos