Si bien encontré una pregunta similar , no encontré una respuesta a mi problema
Cuando intento cambiar el nombre del directorio de FOO a foo a través de git mv FOO foo, obtengo
fatal: renaming 'FOO' failed: Invalid argument
OKAY. Así que intentogit mv FOO foo2 && git mv foo2 foo
Pero cuando trato de comprometerme git commit ., obtengo
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
Cuando agrego el directorio a través de git add foonada cambia y git commit .me vuelve a dar el mismo mensaje.
¿Qué estoy haciendo mal? Pensé que estaba usando un sistema que distingue entre mayúsculas y minúsculas (OSX), ¿por qué no puedo simplemente cambiar el nombre del directorio?
macos
git
version-control
case-sensitive
oschrenk
fuente
fuente

git mvfunciona.git mv foo Foosi usa un shell cygwin.Respuestas:
Estás en un entorno que no distingue entre mayúsculas y minúsculas. Además, agregar sin el
-Ano se ocupará del lado de eliminarmvcomo lo entiende Git. ¡Advertencia! Asegúrese de que no haya otros cambios o archivos sin seguimiento cuando haga esto o se confirmarán como parte de este cambio.git stash -uprimero, haz esto y luegogit stash popdespués. Continuando: Para evitar esto, haga lo siguiente:Esa es la forma extraída de cambiar el directorio de trabajo, confirmar y luego contraer las 2 confirmaciones. Puede simplemente mover el archivo en el índice, pero para alguien que sea nuevo en git, puede que no sea lo suficientemente explícito en cuanto a lo que está sucediendo. La versión más corta es
Como se sugiere en uno de los comentarios, también puede hacer una rebase interactiva (
git rebase -i HEAD~5si se introdujo el caso incorrecto hace 5 confirmaciones) para arreglar el caso allí y no que aparezca el caso incorrecto en ningún lugar del historial. Debe tener cuidado si hace esto, ya que los hashes de confirmación a partir de ese momento serán diferentes y otros tendrán que reajustar o fusionar su trabajo con el pasado reciente de la rama.Esto está relacionado con la corrección del nombre de un archivo: ¿git no distingue entre mayúsculas y minúsculas?
fuente
git add foo2.-Ase ocupa de ambos. Viceversa para el primer paso. Agregaré la advertencia. ¡Gracias!git rebase -i HEAD~2. Nota: Para simplificar esto, configure el mensaje final en su primera confirmación y arregle la segunda.Desea establecer la opción
core.ignorecaseen falso, lo que hará que Git preste atención al caso en los sistemas de archivos que no lo admiten de forma nativa. Para habilitar en su repositorio:Luego, puede cambiar el nombre del archivo con
git mvy funcionará como se esperaba.fuente
I modified a file that doesn't exist.. hrmerror: The following untracked working tree files would be overwritten by checkout:pero ... esos archivos no existen.Pude resolver esto, usando git 1.7.7 usando un nombre de archivo temporal:
fuente
(
git mv-Variante libre.)Me encontré con este problema en Git en Mac OS X 10.9. Lo resolví de la siguiente manera:
git rm -r --cached /path/to/directoryEso prepara el directorio para su eliminación en Git pero en realidad no elimina ningún archivo físico (
--cached). Esto también hace que el directorio, ahora con el caso adecuado, se muestre en archivos sin seguimiento.Entonces puedes hacer esto:
Git reconocerá que ha cambiado el nombre de los archivos y, cuando lo haga
git status, debería ver una serie derenamed:líneas. Inspeccione y asegúrese de que se vean correctos, y si es así, puede confirmar los cambios normalmente.fuente
mvcomando no funcionaba para cambiar el nombre del directorio; Tuve que cambiarle el nombre dentro de Finder. Aparte de eso, esta solución funciona perfectamente.Esta es una solución rápida y segura contra errores:
¡Advertencia! Cambie siempre el nombre de todos los archivos en la carpeta renombrada (usar
/*).No cambie el nombre de archivos individuales. Esto conduce a un error, que se describe en esta respuesta .
Si primero desea ver el resultado primero, use
-n:Después de haber hecho un
mv:Ahora Git debería haber cambiado el nombre de la carpeta TANTO en sus archivos internos como en el sistema de archivos.
fuente
Forzarlo con la opción -f:
fuente
false, funcionó para míTuve un problema relacionado.
Una carpeta llamada 'Pro' (creada primero) y otra 'pro' (creada por error). En Mac, es lo mismo, pero diferente según git.
la configuración de git cambia el nombre de los archivos a la carpeta correcta (gracias), y también creó archivos fantasma en 'pro' (¡¡No !!). No pude agregar cambios de archivos fantasma a la pista y no pude verificar otras ramas a menos que lleve esos archivos conmigo, y tampoco pude restablecerlos de alguna manera.
En lugar de eso, lo hice
Para que sea más seguro, lo hice en una rama de reparación separada, y luego me fusioné con la rama principal
Para el problema del archivo fantasma creado por, ¿algún gurú puede explicar cómo y por qué? Gracias por adelantado.
fuente
No está utilizando un sistema de archivos que distingue entre mayúsculas y minúsculas en OS X a menos que lo elija explícitamente. HFS + puede distinguir entre mayúsculas y minúsculas, pero el valor predeterminado no distingue entre mayúsculas y minúsculas.
fuente
Aquí hay una solución realmente simple para todo el gitfoo en esta página.
fuente
Al mejorar la respuesta de Adam Dymitruk (es una tontería que SO no me deje comentar su respuesta), el uso de "git mv" pondrá automáticamente en escena exactamente los archivos movidos. No se necesita ocultar y se puede evitar el arriesgado "git add -A":
fuente
Esto funcionó muy bien para mí en Windows. Powershell usado con lo siguiente:
mv .\Folder-With-Wrong-Casing .\tempgit add -Agit commit -m "renamed folder with wrong casing to temp"mv .\temp .\Folder-with-Correct-Casinggit add -Agit commit --amend -m "Renamed to proper casing"git pushGracias a la respuesta de Adam anterior.
fuente