Fork & Clone — Contribuer à l'open source
Module 03 45 min
Objectifs de la section
- Comprendre la différence entre fork et clone
- Forker un projet sur GitHub
- Configurer le remote upstream
- Contribuer à un projet open source via une PR
- Maintenir votre fork à jour
Fork vs Clone
| Fork | Clone | |
|---|---|---|
| Où | Copie sur GitHub (dans votre compte) | Copie locale sur votre machine |
| Connexion | Indépendant du dépôt original | Lié au dépôt original |
| Usage | Contribuer à des projets où vous n'avez pas accès | Travailler sur votre propre projet |
| Commande | Sur l'interface GitHub ou gh repo fork | git clone <url> |
Forker un projet
Via l'interface GitHub
- Allez sur le dépôt que vous voulez forker
- Cliquez sur le bouton Fork (coin supérieur droit)
- Choisissez votre compte comme destination
- GitHub crée
votre-username/nom-du-projet
Via GitHub CLI
# Forker un dépôt et le cloner automatiquement
gh repo fork alice/super-projet --clone
# Forker sans cloner
gh repo fork alice/super-projet
# Lister vos forks
gh repo list --fork
Configurer les remotes après un fork
# Après avoir cloné votre fork
git clone git@github.com:vous/super-projet.git
cd super-projet
# Voir les remotes actuels
git remote -v
# origin git@github.com:vous/super-projet.git (fetch)
# origin git@github.com:vous/super-projet.git (push)
# Ajouter le dépôt original comme "upstream"
git remote add upstream git@github.com:alice/super-projet.git
# Vérifier
git remote -v
# origin git@github.com:vous/super-projet.git (fetch)
# upstream git@github.com:alice/super-projet.git (fetch)
Workflow de contribution open source
# 1. Synchroniser votre fork avec le dépôt original
git fetch upstream
git switch main
git merge upstream/main
git push origin main # Mettre à jour votre fork sur GitHub
# 2. Créer une branche pour votre contribution
git switch -c fix/correction-typo-readme
# 3. Faire vos modifications et commits
# ... modifier des fichiers ...
git add .
git commit -m "fix: corriger la typo dans le README"
# 4. Pousser vers votre fork
git push -u origin fix/correction-typo-readme
# 5. Créer une Pull Request vers le dépôt original
gh pr create \
--repo alice/super-projet \
--title "fix: corriger la typo dans le README" \
--body "Corrige une faute de frappe dans la section installation"
Maintenir votre fork à jour
# Récupérer les derniers changements du projet original
git fetch upstream
# Voir ce qui a changé
git log HEAD..upstream/main --oneline
# Mettre à jour votre branche main locale
git switch main
git rebase upstream/main
# Pousser les changements vers votre fork
git push origin main
# Mettre à jour votre branche de fonctionnalité
git switch feature/ma-fonctionnalite
git rebase upstream/main
git clone en détail
# Clone standard
git clone https://github.com/utilisateur/depot.git
# Clone dans un dossier spécifique
git clone git@github.com:utilisateur/depot.git mon-dossier
# Clone superficiel (seulement le dernier commit — plus rapide)
git clone --depth 1 git@github.com:utilisateur/depot.git
# Clone d'une branche spécifique
git clone --branch feature/login git@github.com:utilisateur/depot.git
# Clone avec les submodules
git clone --recursive git@github.com:utilisateur/depot.git
Résumé des commandes clés
| Commande | Description |
|---|---|
gh repo fork <repo> | Forker un dépôt |
git clone <url> | Cloner un dépôt |
git remote add upstream <url> | Ajouter le remote original |
git fetch upstream | Récupérer les changements du original |
git rebase upstream/main | Mettre à jour avec le original |
gh pr create | Créer une Pull Request |