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?

32
demandé sur Rio 2010-03-29 17:38:17

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.

37
répondu Christoffer Hammarström 2013-01-04 17:17:39

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.

1
répondu Tony K. 2011-06-28 05:46:58