Git: el file renombrado causa conflictos al comstackr en Java

Hace mucho time, creé un repository y envié un file llamado CameraAction.java.

Con el paso del time, descubrí que el uso de mayúsculas en 'A' causaba algunos problemas con Spring Boot (no recuerdo exactamente cuál era el problema), pero decidí que sería más seguro llamar a mi class Cameraaction.java.

Ahora, cada vez que selecciono git, obtengo el nombre del file CameraAction.java en lugar de Cameraaction.java.

Esto causa un conflicto cuando compilo la aplicación ya que el nombre del file y el nombre de la class no se escriben de la misma manera:

CameraAction.java:12: error: class Cameraaction is public, should be declanetworking in a file named Cameraaction.java public class Cameraaction extends Action { ^ 

¿Cómo puedo solucionar esto?

Traté de hacer esto:

 git rm --cached CameraAction.java 

pero me acaba de decir:

 fatal: pathspec 'CameraAction.java' did not match any files 

Para comprometer CameraAction.java como Cameraaction.java (no es lo correcto, consulte el enlace sobre las convenciones de nomenclatura de Java a continuación) intente hacer lo siguiente:

 git mv -f CameraAction.java Cameraaction.java 

seguido de un git commit -m "Fixed the case of a file" y un git push Confirma que el problema se ha Cameraaction.java haciendo un nuevo git clone y comprobando que el file está desprotegido como Cameraaction.java

Si mientras hace lo anterior, obtiene un error de "Existe file", luego use un file tmp para hacerlo, de esta manera:

 git mv CameraAction.java CameraAction.java.tmp git mv CameraAction.java.tmp Cameraaction.java 

Sin embargo, como se señala en el comentario anterior, las Convenciones del código de nomenclatura de Java tienen lo siguiente que decir acerca de los nombres de class:

enter image description here


¿Cómo maneja git los filesystems que no distinguen entre mayúsculas y minúsculas?

Git tiene una configuration que le dice si debe distinguir entre mayúsculas y minúsculas o insensible: core.ignorecase . Para decirle a Git que sea sensible a las mayúsculas y minúsculas, simplemente establezca esta configuration en false :

 git config core.ignorecase false 

De la documentation de git config :

core.ignorecase

Si es verdadero, esta opción habilita varias soluciones para permitir que git funcione mejor en filesystems que no distinguen entre mayúsculas y minúsculas, como FAT. Por ejemplo, si una list de directory encuentra makefile cuando git espera Makefile , git asumirá que es realmente el mismo file y continuará recordándolo como Makefile .

El valor pnetworkingeterminado es falso, excepto git-clone (1) o git-init (1) core.ignorecase y establecerá core.ignorecase verdadero si es apropiado cuando se crea el repository.

¿En qué SO estás? Lo más probable es que no estés en * nix. Específicamente, es probable que tenga un caso de preservación, pero caso no sensible del sistema de files.

Puede intentar cambiar el nombre del file usted mismo a Cameraaction.java , o simplemente rm CameraAction; git checkout -- Cameraaction.java rm CameraAction; git checkout -- Cameraaction.java .