web-dev-qa-db-fra.com

copier le répertoire/mv dans un autre répertoire de git

J'ai un

dir1/contient beaucoup de fichiers et de sous-répertoires, je souhaite changer le nom du répertoire en dir2 /. j'ai essayé

git mv dir1/dir2 /

J'ai eu ce message:

fatal: renaming 'dir1' failed: Permission denied

mettre à jour:

J'ai couru à partir de git pour la ligne de commande Windows http://code.google.com/p/msysgit/
Quelle est la commande correcte?

20
icn

Vous pouvez simplement utiliser des outils Unix standard, ou quel que soit votre système d'exploitation. Alors:

mv dir1 dir2

devrait marcher. Assurez-vous simplement que vous ajoutez les répertoires dir1 et dir2 à la zone intermédiaire une fois que vous avez terminé, afin de valider les modifications.

Voici un exemple de validation du changement (une fois effectué):

git add dir1 dir2 && git commit dir1 dir2

Il y a probablement d'autres façons de le faire aussi.

9
Leif Andersen

Il se peut également que le répertoire (ou un fichier contenu dans celui-ci) soit utilisé par un autre programme, ce qui vous empêche de faire quoi que ce soit avec ce dossier. Seulement sous Windows, évidemment.

Utilisez le Process Explorer si vous ne savez pas quel programme a capturé ce répertoire/fichier.

20
Bram Schoenmakers

Les répertoires source et cible doivent tous deux être archivés dans le référentiel git. Si vous déplacez dir1 vers dir2 et que dir2 n'est pas encore validé, vous obtiendrez ce message d'erreur.

2
msgrockclimber

Je cours git dans Cygwin. J'ai eu le même problème jusqu'à ce que je supprime les fichiers non suivis du répertoire à renommer. Cela a permis au git mv de se terminer correctement.

Si vous voyez que des fichiers non suivis dans votre répertoire sont renommés lorsque vous exécutez git status, vous devrez les déplacer temporairement ailleurs et les ramener après le git mv.

0
Dave

J'ai eu le même problème. TGitCache.exe était le processus qui empêchait le dossier d'être renommé. En utilisant TaksExplorer, j'ai tué le processus et exécuté la commande à partir de l'invite de commande Git Bash.

0
Vivian De Smedt