FAQ - [GIT] Comment détacher un sous-répertoire et en faire un dépôt à part?
FAQ - [GIT] Comment détacher un sous-répertoire et en faire un dépôt à part?
La démarche consiste à cloner le dépôt local, puis à définir les branches intéressantes. Ensuite, il faut déréférencer le dépôt distant, supprimer les tags et, l'essentiel, filtrer les branches et tags concernés par le sous-répertoire à extraire. La suite consiste à nettoyer l'historique pour éviter de stocker trop d'informations. Enfin, un suivi du nouveau dépôt distant et surtout un push pour valider le nouveau dépôt. Et vous voilà avec un dépôt ne contenant que le sous-répertoire qui vous intéresse, ramené à la racine, et les commits associés.
En code:
git clone cd for i in ; do git branch -t $i origin/$i; done git remote rm origin git checkout master git tag -l | xargs git tag -d git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter -- --all git reset --hard git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d git reflog expire --expire=now --all git gc --aggressive --prune=now git remote add origin [email protected]:beorndev/.git git push -u origin