2011-07-28 10 views
20

Tengo una dir1copia del directorio/mv a otro directorio en git

/contiene unos archivos de lote y subdirecties, quiero cambiar el nombre del directorio a directorio2 /. Probé

git mv dir1/directorio2/

Tengo este mensaje:

fatal: renaming 'dir1' failed: Permission denied 

actualización:

me encontré de git para la línea de comandos de Windows http://code.google.com/p/msysgit/
Lo es el comando correcto?

+0

¿Qué sistema operativo está utilizando para ejecutar estos comandos? – dwmcc

+0

Corrí desde git para la línea de comandos de Windows http://code.google.com/p/msysgit/ – icn

Respuesta

9

Puede usar herramientas estándar de Unix, o cualquiera que sea su sistema operativo. Entonces:

mv dir1 dir2 

debería funcionar. Solo asegúrese de agregar tanto dir1 como dir2 al área de preparación después de que haya hecho eso, para que pueda confirmar los cambios.

Un ejemplo de cómo cometer el cambio (una vez hecho) podría ser:

git add dir1 dir2 && git commit dir1 dir2 

Probablemente hay otras maneras de hacerlo también.

+4

Estoy bastante seguro de que perderá el historial de modificaciones de los archivos que mueve independientemente de Git. – Vince

+3

@Ghodmode: no, git está basado en el contenido y renombra la detección en función del contenido del archivo. – user518450

0

Estoy ejecutando git en cygwin. Tuve el mismo problema hasta que eliminé archivos sin seguimiento del directorio para renombrarlos. Eso permitió que el git mv se completara correctamente.

Si ve archivos sin seguimiento en su directorio para cambiar el nombre cuando ejecuta git status, tendrá que mover esos archivos a otro lugar temporalmente y volverlos a colocar después del git mv.

20

También podría ser que el directorio (o un archivo dentro) esté siendo utilizado por otro programa, lo que le impide hacer algo con esa carpeta. Solo en Windows, obviamente.

Utilice Process Explorer si no está seguro de qué programa ha capturado ese directorio/archivo.

+0

Esta fue exactamente la causa del problema para mí. Creo que esta es una mejor respuesta que la aceptada porque mover el directorio independientemente de Git hará que pierdas el historial de modificaciones de cualquiera de los archivos en el directorio que estás moviendo. Además de eso, ¿no fallará de todos modos si el sistema operativo tiene archivos en el directorio bloqueados? – Vince

+0

También resolvió mi problema. TGitCache.exe fue el proceso para mantener la carpeta.Sospecho que TGitCache mantendrá todas las carpetas bajo control git haciendo que el comando de cambio de nombre no funcione casi el 100% del tiempo. –

+0

¡Esto resolvió mi problema también! Por cierto, suelo usar [unlocker] (http://emptyloop.com/unlocker/) para desbloquear archivos bloqueados por un proceso. –

2

Tanto el directorio de origen como el de destino deben registrarse en el repositorio de git. Si está moviendo dir1 a dir2 y dir2 aún no se ha confirmado, obtendrá este mensaje de error.

0

Tuve el mismo problema. TGitCache.exe fue el proceso que impedía el cambio de nombre de la carpeta. Utilizando TaksExplorer he cancelado el proceso y ejecuto el comando desde el símbolo del sistema de Git Bash.

Cuestiones relacionadas