Renommer un sous-module git
Est-il un moyen facile de renommer un git sous-module répertoire (autre que de passer par l'ensemble du mouvement de la suppression et de re-ajout d'un nouveau nom de destination).
Et tant que nous y sommes, pourquoi est-il que je ne peut tout simplement pas faire ce qui suit dans le répertoire parent: git mv old-submodule-name new-submodule-name
- Vous n'aurez plus besoin de mettre à jour
.gitmodules
manuellement lors du déplacement d'un sous-module. voir ma réponse ci-dessous - réponse a fonctionné comme un charme pour moi
- Git modules sont trop compliqués.
npm
montre comment de simples travaux. Un jour... peut-être... quelqu'un... vais le réécrire... en attendant... - la réponse n'est pas toute l'histoire d'aujourd'hui: il sera en effet le changement .gitmodules, mais il suffit de renommer le chemin, pas le nom du module. Vous avez besoin d'une édition supplémentaire pour .gitmodules pour corriger cela et un 'git sous-module de synchronisation" pour terminer le processus complet
- La propriété [sous-module "name_of_submodule"] est un Git nom interne, vous pouvez le renommer pour ne pas le confondre-vous, mais c'est juste une étiquette.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la suite de flux de travail de travail:
mv oldpath newpath
git rm oldpath
git add newpath
git submodule sync
Remarque: cette approche ne permet pas de mettre à jour l'index et .gitmodules correctement en 2018 versions de GIT.
git add newpath
ne pas utiliser une barre obliquefatal: This operation must be run in a work tree fatal: 'git status --porcelain' failed in submodule newpath.
j'ai utiliségit submodule add SUB_URL new_path
au lieu degit add new_path
, et cela a fonctionné..git/modules/SUBMODULE/config
de fichier, de telle sorte que laworktree
points de la droite répertoire de nouveau.2.13.1
. Mais simplement de fairegit mv old new
fonctionne comme un charme. J'ai seulement besoin de faire git commit pour valider les modifications..gitmodules
de sorte qu'il ne fonctionne pas vraiment.Git1.8.5 (octobre 2013) devrait simplifier le processus. Il suffit de faire un:
Voir plus dans s'engager 0656781fadca1:
git 2.9 (juin 2016) permettra d'améliorer
git mv
pour le sous-module:Voir s'engager a127331 (19 Avril 2016) par Stefan Beller (
stefanbeller
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 9cb50a3, 29 Avril 2016)fatal: source directory is empty, source=my_source, destination=my_destination
. Vais essayer ce nouveau lorsque 1.8.5 a la version stable.{submodule}/.git
et.git/modules/submodules/{submodule}/config
fait, et c'est mis à jour correctement pour le premier niveau de submodules, mais pas le second niveau submodules, lorsqu'un premier niveau de sous-module est déplacé à l'intérieur de la mère des pensions. J'ai eu à mettre à jour deux de deuxième niveau sous-module fichiers manuellement pourgit status
et les autres commandes fonctionnent de nouveau.git submodule sync
ne résout pas le problème, bien que--recursive
pourrait (bien que j'ai oublié d'essayer.)git submodule update --recursive --init
fait à partir du parent principal des pensions de corriger celles qui sont automatiquement après lagit mv
?git mv folder newpath
ougit mv folder/ newpath/
?)Ces solutions ne fonctionne pas pour moi parce que lors de l'utilisation de git add commande, le sous-module a été inclus dans le projet comme un simple répertoire et non pas comme un sous-module.
la solution correcte est:
Source: http://bcachet.github.io/development/2012/05/25/rename-git-submodule/
J'ai juste essayé quelques suggéré ci-dessus. Je suis en cours d'exécution:
J'ai trouvé que c'était mieux de-init le sous-module, supprimer le répertoire et créez un nouveau sous-module.
Au moins, c'est ce qui a fonctionné pour moi le meilleur. YMMV!
Il n'est pas possible de le renommer, de sorte que vous avez à enlever d'abord (
deinit
) et l'ajouter à nouveau.Donc, après l'avoir supprimé:
vous pouvez également double vérifier et supprimer les références dans:
.gitmodules
.git/config
.git/modules/<name>
(le meilleur pour faire une copie de sauvegarde), chaque dossier aconfig
fichier où il maintient la référence à sesworktree
alors en scène vos changements en s'engageant des modifications à votre repo par:
et vérifiez si vous n'avez pas de questions en suspens:
alors maintenant, vous pouvez ajouter le git sous-module de nouveau:
Modifier la .gitmodules fichier à renommer le sous-module, puis renommer le sous-module de répertoire.
Je pense que vous pourriez avoir à faire un
git submodule sync
par la suite, mais je ne suis pas en mesure de vérifier à l'instant.MacOs: Quand je veux utiliser VonC solution de changer de sous-module dossier
Common
minuscules:- Je obtenir
Solution - utiliser un dossier temporaire nom et passer deux fois:
C'est tout 🙂