109 votes

Comment puis-je déplacer un répertoire unique depuis un dépôt git d’un nouvel espace de stockage tout en conservant l’histoire ?

J'ai hérité d'un dépôt git contenant de multiples projets dans des répertoires distincts. Je voudrais diviser le référentiel dans leurs nouveaux référentiels, un pour chaque projet et ensuite le référentiel maître contenir les projets submodules. J'aimerais faire tout cela tout en conservant l'historique de la révision de chacun des projets, si possible.

J'ai pu cloner le dépôt de chaque projet et de supprimer tous les autres projets à chaque fois, mais il y a de meilleur moyen pour éviter d'avoir la cloné de l'histoire dans chaque nouveau projet de référentiel?

98voto

Brian Campbell Points 101107

Vous pouvez utiliser `` pour réécrire l’histoire d’un projet. De la documentation :

Réécrire le référentiel à regarder comme si foodir / avait été sa racine du projet et jetez toute autre histoire :

Faire plusieurs copies de votre repo, cela pour chaque sous-répertoire que vous souhaitez fractionner sur et vous devez liquider avec ce que vous recherchez.

18voto

CoffeeMonster Points 1205

Avez-vous vu detach-subdirectory-into-separate-git-repository ? Cela m’a beaucoup aidé.

1voto

Colin Burnett Points 4572

Le point de git, c'est que l'histoire s'incarne dans chaque commit par le malaxage, le parent s'engager. Vous pourriez "replay" les commits (c'est essentiellement la façon dont le svn-importateur travaux) dans un nouveau dépôt et ne gardant que chaque sous-projet. Ceci, cependant, serait de détruire le sens de la validation des hachages. Si vous n'avez pas de problème avec ça alors ainsi soit-il.

Dans le passé, j'ai juste cloné, et partit. Cela rend les choses plus grandes, mais l'espace disque n'est pas cher; mon temps est cher.

Aussi, je ne sais pas du tout des outils d'épissage d'un répertoire. Je suppose que vous pourriez git log sur le répertoire pour trouver tous les commits sur elle, puis relire les commits avec quelque chose comme git-rapide-à l'exportation?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X