2010-10-13 21 views
51

Quería cambiar el nombre de una carpeta de "Frameworks" a "frameworks", pero git no me dejaba agregar el nuevo nombre en minúscula. Supongo que trata los nombres de archivo con mayúsculas y minúsculas, ¿o sí?Git: Renombrar archivo

Un git add frameworks/ -f no ayudó

+0

¿Qué sistema operativo? –

+0

Ejecuto MacOS 10.6 –

Respuesta

97

que puede probar:


Pero la cuestión del caso (en Windows, por ejemplo) se describe en el msysgit issue 228 (de nuevo: esto debería now -- June 2014 -- work with git 2.0.1)

siempre hay una opción para configurar ignorecase en false en el archivo de configuración que forzará Unix como la semántica de Git en la parte superior de NTFS.
Git apoya este comportamiento, pero no es el valor por defecto - desde el punto de vista NTFS a.txt y A.txt son la misma cosa - por lo Git intenta preservar que como la mayoría de los usuarios podrían esperar

Como una mejor solución, puede

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt 

, que también cambia la caja del archivo como se almacena en el disco.

Esta entrada de blog illustrates the same issue on MacOs durante una rebase:

El valor por defecto en sistemas de archivos de Mac OS X es que son sensibles a mayúsculas. FFFFFF.gif es lo mismo que ffffff.gif.

Si elimina el archivo en cuestión, solo desde el sistema de archivos, no desde el índice Git, tenga en cuenta que puede fusionar la rama en cuestión y hacer que restaure el archivo como si nada hubiera sucedido.

Los pasos son bastante simples:

$ rm file/in/question.gif 
$ git merge trunk 

De todos modos, remember what git mv stands for:

mv oldname newname 
git add newname 
git rm oldname 

, por lo que si newname y oldname choque, es necesario hacerlos diferentes (incluso si solo por un corto período de tiempo), de ahí el git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

+0

Ya probé 'git mv', pero me dio' fatal: renombrando 'Frameworks' failed: argumento inválido' –

+0

@Erik: ¿cuál fue la línea de comando exacta que probaste? – VonC

+1

Ok, el 2 paso 'git mv' sí funcionó! –

1

Estaba teniendo un problema similar y no pude obtener un nuevo nombre de carpeta (caso diferente) para cambiar en los repos remotos. Descubrí que la solución más fácil era simplemente sacar el archivo del repositorio y comprometerlo. Disparando una acción de eliminación. Luego vuelva a agregar y cuando agregué, entró con el estuche adecuado.

2

Si aloja en Github, puede usar la función de cambio de nombre en su sitio web. Tuve que cambiar la carcasa de 5 archivos y encontré que funcionó muy bien.