Auteur : Nicolas Rouanne

Date : 26 janvier 2026


Vous avez déjà essayé de migrer des PRs ouvertes lors d'une consolidation de repositories ?

Nous avons récemment migré de trois repos séparés (backoffice-ui-next, webapp, chat) vers un monorepo unique. La migration du code était assez simple—mais nous avions 13 PRs ouvertes qui devaient suivre.

Les rebaser manuellement ? Douloureux. Les recréer from scratch ? Encore pire. À la place, j'ai utilisé git format-patch et git am pour transplanter chirurgicalement les commits de chaque PR dans la nouvelle structure.

La Configuration

Notre monorepo mappe les anciens repos ainsi :

Repo Source Répertoire Cible
backoffice-ui-next web/
webapp api/
chat chat/

Certaines PRs ne touchaient qu'un seul repo. D'autres—les plus complexes—traversaient plusieurs repos et devaient être combinées en une seule PR monorepo.

La Technique Principale

La magie opère en deux commandes :

# Générer un fichier patch contenant tous les commits d'une branche
git format-patch origin/develop..origin/feature-branch --stdout > /tmp/feature.patch

# Appliquer le patch avec un préfixe de répertoire
git am --directory=web/ /tmp/feature.patch

Le flag --directory est la clé. Il ajoute un chemin devant chaque fichier du patch, relocalisant ainsi les changements vers leur nouveau foyer dans le monorepo.

Configurer les Remotes

D'abord, j'ai ajouté tous les repositories sources comme remotes :

cd /chemin/vers/monorepo
git remote add backoffice-ui-next <https://github.com/org/backoffice-ui-next.git>
git remote add webapp <https://github.com/org/webapp.git>
git remote add chat <https://github.com/org/chat.git>
git fetch --all

Cela donne accès à toutes les branches de tous les repos—essentiel pour générer les patches.

Gérer les Conflits

Bien sûr, tout n'était pas parfait. Quand git am échoue, plusieurs options :