FAQ: [GIT] Comment extraire un sous-répertoire d'un dépôt?
![[#if coverImage??]
[#if coverImage?is_hash]
[#if coverImage.alt??]
${coverImage.alt}
[/#if]
[/#if]
[/#if]](
https://www.beorntech.com/documents/45408/45415/bloggg.jpeg/d773fcc6-ed51-00fa-66be-c12eddde9cef?version=1.0&t=1594996884289
)
[GIT] Comment détacher un sous-répertoire et en faire un dépôt à part?
Vous voulez sortir un sous-répertoire de votre dépôt et en faire un nouveau dépôt, ne contenant que les commits qui y sont associés.
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 git@bitbucket.org:beorndev/.git git push -u origin