Extraire une partie d'un dépôt git?
suppose que mon dépôt git a la structure suivante:
/.git
/Project
/Project/SubProject-0
/Project/SubProject-1
/Project/SubProject-2
et le dépôt contient pas mal de commits. Maintenant, un des sous-projets (SubProject-0) croît assez grand, et je veux prendre le sous-projet-0 dehors et le mettre en place comme un projet autonome. Est-il possible d'extraire toute l'histoire de propagation impliquant le sous-projet-0 du dépôt git parent et de la déplacer vers un nouveau dépôt?
2 réponses
voir http://git-scm.com/docs/git-filter-branch
je pense que vous avez besoin de quelque chose comme
git filter-branch --subdirectory-filter Project/SubProject-0 --prune-empty -- --all
dans un clone du dépôt.
j'avais besoin de faire quelque chose de similaire, mais je voulais essentiellement déplacer un sous-projet d'un repo à un autre. Ce que j'ai fait à la place était d'utiliser fetch, car il peut récupérer des objets à partir de n'importe quelle source.
donc, en gros, j'ai créé une nouvelle branche, j'ai supprimé les trucs inutiles dans cette branche, puis j'ai utilisé git fetch pour tirer la branche d'une pension à une autre. Une fois que j'ai eu les objets, merge a fait le tour.
E. G.
sur le dépôt qui a la substance originale:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
alors vous pouvez récupérer cette branche d'un dépôt dans un autre (sans rapport):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
où temp:temp signifie "chercher de temp sur la source et l'enregistrer en tant que temp ici". De là, vous pouvez fusionner le résultat dans ton maître.
git merge temp
vous pouvez alors supprimer les branches temp, car dans le premier cas, il n'est pas quelque chose que vous voulez jamais fusionner avec le dans le second cas, vous l'avez fusionné.
je suis sûr que ces Pas pourraient être comprimés un peu, mais cet ensemble semble agréable et clair.