Hay un par de archivos en nuestra base de código controlada por git que me gustaría cambiar el nombre. Específicamente, solo quiero cambiar el caso del archivo, para que se sourceCode.java
convierta SourceCode.java
, por ejemplo. El problema: estoy en un cuadro de Windows, y el sistema de archivos piensa que esos son el mismo nombre de archivo.
¿Cómo puedo hacer que Windows y Git reconozcan ese cambio y lo registren?
git mv
debería funcionar ( stackoverflow.com/a/24979063/6309 ). Incluso en Windows.Respuestas:
Eche un vistazo aquí para obtener más sugerencias sobre cómo hacerlo:
¿Cómo hacer que git ignore los cambios en el caso?
O:
fuente
git add
de esa carpeta recién renombrada, NO COMUNICARSE, cambiar el nombre de la carpeta a lo que debería ser ,git add
otra vez y luego cometer.Get-ChildItem '.' | Rename-Item {$_.Name.ToLowerCase()}
Si está en un sistema de archivos FAT, su única opción es cambiar el nombre de dos etapas:
sourceCode.java
aanything.you.like
anything.you.like
aSourceCode.java
En los días en que usamos Perforce, teníamos exactamente este problema y esta era la única solución que podíamos encontrar.
fuente
Los siguientes pasos me permitieron cambiar el caso en Windows:
ignorecase = false
a[core]
en.git/config
;ignorecase = false
agregado en el primer paso.De esta manera, tiene una confirmación única que contiene el cambio de nombre y facilita el cambio, por ejemplo, un directorio completo.
fuente
Ten cuidado. Hacer esto puede conducir a cambios que son imposibles de fusionar. Git se confunde al fusionarse en Windows porque no puede decidir si el antiguo nombre en mayúsculas y el nuevo nombre en minúsculas son el mismo archivo o no (para Git no lo son, pero para el sistema de archivos sí lo son). Para fusionar, debe hacer una solución manual, como eliminar los archivos antes de fusionarlos.
Vea el problema de rebase de Git con archivos del mismo nombre pero con un caso diferente
No estoy seguro de si este problema es peor que tener un archivo con un nombre poco convencional en su proyecto para siempre, pero vale la pena saber si hay muchos usuarios con muchas ramas que eventualmente necesitarán fusionarse.
fuente
En mi opinión, falta una forma simple. Puede hacer esto para un solo archivo, un directorio específico o incluso todo el repositorio:
Si desea afectar también los subdirectorios, debe usar la
-r
bandera:fuente
Con NTFS (o FAT), un solo
git mv
comando no resuelve el problema. Esta pregunta muestra una técnica que funciona: git mv y solo cambia el caso del directoriofuente