Migrer ses repos depuis GitHub vers Forgejo self-hosted est une opération qui peut sembler intimidante mais qui se fait en réalité en quelques heures grâce à l’import natif Forgejo qui copie code, issues, PR, wiki, releases. Voici le guide pratique 2026 pour migrer proprement, sans perdre l’historique ni la collaboration en cours.
Voir notre guide Forgejo.
Ce que la migration préserve
- Code source complet avec tout l’historique Git
- Toutes les branches
- Tags et releases (avec assets binaires)
- Issues (avec auteurs, labels, assignés, milestones)
- Pull requests (avec reviews)
- Wiki
- Comments des issues et PR
Ce qui ne migre pas automatiquement
- GitHub Actions workflows (à adapter manuellement, mais 90 % compatible)
- Secrets repo (à recréer)
- Webhooks (à reconfigurer)
- Settings spécifiques GitHub (Pages, Discussions, Sponsors)
- Forks externes (les forks deviennent des repos indépendants)
Étape 1 — Préparer côté GitHub
- Aller sur
github.com/settings/tokens - Generate new token (classic) → cocher repo, read:org, read:user
- Copier le token (commence par
ghp_)
Étape 2 — Importer dans Forgejo
- Forgejo → « + » → « New Migration » (ou Repos → New Repository → Migrate)
- Service : « GitHub »
- Clone Address :
https://github.com/votre-org/votre-repo - Authorization (token) : votre
ghp_xxx - Owner : votre user ou organisation Forgejo
- Repository name : nom à donner
- Cocher : Issues, Pull Requests, Releases, Wiki, Labels, Milestones
- Visibility : Private (recommandé pour démarrer)
- Submit
L’import prend quelques minutes à quelques heures selon la taille du repo et le nombre d’issues/PR. Forgejo affiche la progression.
Étape 3 — Mirror push vers GitHub (optionnel)
Si vous voulez maintenir GitHub comme miroir public pendant la transition :
- Repo Forgejo → Settings → Advanced → Push Mirror
- URL :
https://github.com/votre-org/votre-repo.git - Username + Token GitHub
- Sync Interval : 8h ou à la demande
Forgejo poussera désormais automatiquement chaque commit vers GitHub.
Étape 4 — Migrer les workflows GitHub Actions
Les workflows YAML dans .github/workflows/ doivent être déplacés dans .forgejo/workflows/ ou .gitea/workflows/. La syntaxe est compatible à 90 %. Voir notre guide Forgejo Actions.
# Renommer le dossier
git mv .github/workflows .forgejo/workflows
# Vérifier les références aux secrets et variables, ajuster si besoin
# Test : push, vérifier que le workflow s'exécute
Étape 5 — Mettre à jour les remotes des laptops
# Sur chaque laptop dev
git remote set-url origin git@git.exemple.sn:user/repo.git
git remote -v
# vérifier l'URL change
Étape 6 — Recréer secrets et webhooks
- Repo Forgejo → Settings → Secrets → recréer tous les secrets nécessaires
- Repo Forgejo → Settings → Webhooks → recréer si vous aviez des intégrations externes (Slack, Discord, Sentry, Linear)
- Recréer les Deploy Keys si nécessaire
Étape 7 — Migrer les contributeurs
Les commits gardent leur signature email d’origine. Pour que les contributeurs voient leurs commits liés à leur compte Forgejo, ils doivent ajouter dans leur profil l’email utilisé sur GitHub. Pas de migration automatique des comptes utilisateurs.
Étape 8 — Période de double-écriture
Pour minimiser les ruptures, gardez les deux remotes pendant 2-4 semaines :
# Configurer plusieurs remotes
git remote add forgejo git@git.exemple.sn:user/repo.git
git remote add github git@github.com:org/repo.git
# Push aux deux
git push forgejo main
git push github main
# Ou via mirror push automatique côté Forgejo (étape 3)
Étape 9 — Couper GitHub définitivement
- S’assurer que tout l’historique est bien sur Forgejo
- S’assurer que tous les contributeurs ont basculé
- Archiver le repo GitHub (Settings → Archive) plutôt que supprimer
- Supprimer les remotes
githubdes laptops
Adaptation Afrique de l’Ouest
Pour une PME ouest-africaine de 5-10 développeurs, la migration GitHub → Forgejo est typiquement faite sur un weekend : import vendredi soir, validation samedi, communication équipe + bascule remotes lundi. Économie immédiate de 40-200 USD/mois selon le plan GitHub précédent.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Import très lent | Beaucoup d’issues | Patience, ou import code+wiki seulement puis issues séparément |
| Mirror push échoue | Token GitHub expiré ou portée | Régénérer token avec scope repo |
| Workflows GitHub Actions cassent | Actions tierces incompatibles | Adapter manuellement, voir guide Forgejo Actions |
| Issues sans assignee | User GitHub pas trouvé chez Forgejo | Créer compte avant import, ou ajuster post-migration |