Par Anonyme (non vérifié) , 29 avril 2026

L'objectif

Vous voulez déplacer un répertoire d'un repo vers un autre, en gardant l'historique complet de commits des fichiers déplacés.

Étape 1 : extraire le sous-ensemble

git clone <source-repo> source-extract
cd source-extract
git filter-repo --path packages/widget --path-rename packages/widget:

Étape 2 : importer dans la cible

cd ../target-repo
git remote add widget-source ../source-extract
git fetch widget-source
git merge --allow-unrelated-histories widget-source/main

Étape 3 : placer les fichiers

git filter-repo --to-subdirectory-filter vendor/widget

Nettoyage

git remote remove widget-source
rm -rf ../source-extract

Vérifier l'historique

git log --follow vendor/widget/index.js
git blame vendor/widget/index.js

Supprimer les fichiers de la source

cd source-repo
git filter-repo --invert-paths --path packages/widget

Alternative : git subtree

git subtree add --prefix=vendor/widget <source-url> main --squash
git subtree pull --prefix=vendor/widget <source-url> main --squash

Éviter les pièges

  • Travaillez toujours sur des clones.
  • Lancez sur un clone frais.
  • Coordonnez avec l'équipe.
  • Les tags sont préservés.