2017-05-25 2 views
2

J'ai un dépôt git avec> 100 engage que je quelque temps initialisés retour dans le chemin suivant:Déplacer dépôt git à un sous-répertoire dans le même chemin tout en conservant toute son histoire

/Users/myusername/

Cependant, tous de mes commits sont en fait des fichiers dans le chemin:

/Users/myusername/excess/folders/not/requiring/version/control/project_root/

Je aurais dû initialiser le dépôt dans project_root/, parce que je ne ai pas besoin de contrôle de version quoi que ce soit dans les répertoires supérieurs.

Existe-t-il un moyen simple de modifier le chemin de mon référentiel afin que le niveau supérieur du référentiel soit project_root/ tout en conservant mon historique de version tel quel? Existe-t-il des étapes supplémentaires pour que cela soit reflété dans mon référentiel distant ou est-ce que je viens de valider et de pousser après avoir effectué le changement?

+0

Où est-il maintenant? Dans 'control /'? – ElpieKay

+0

@ElpieKay le dépôt est actuellement dans '~' malheureusement, bien que tous les commits soient pour des fichiers et des dossiers dans 'project_root /'. Je viens de faire quelques modifications qui, espérons-le, clarifient. – isosceleswheel

Répondre

3

En cas de problème, vous pouvez supprimer les fichiers copiés .git* et recommencer. Voici ce que vous pouvez faire:

$ cp -r .git* path/to/project_root/ 
$ cd path/to/project_root/ 
$ git add -A . 

Lorsque vous appelez git status, tout ce que vous devriez voir sont renomme et supprime maintenant. Si tout semble bon, vous pouvez supprimer .git* dans la racine précédente.

méfiez-vous également que tous les fichiers existaient dans l'histoire restera là, qui nécessite une autre opération pour nettoyer si vous avez des fichiers d'informations d'identification, etc.

+0

Un problème est que dans 'excess/folders/not/require/version/control /' il y a beaucoup de choses que je dois garder, donc je ne peux pas le supprimer. Je mets à jour ma question pour refléter ceci et d'autres contraintes. – isosceleswheel

+0

Oui, et j'ai raté un autre point dans votre question. Je vais le mettre à jour prochainement. – hurturk