Pregunta ¿Cómo puedo confiar solo en mayúsculas y minúsculas los cambios de nombre de archivo en Git?


He cambiado el nombre de algunos archivos por de-capitalizar la primera letra, como en Name.jpg a name.jpg. Git no reconoce estos cambios y tuve que eliminar los archivos y subirlos de nuevo. ¿Hay alguna manera de que Git distinga entre mayúsculas y minúsculas al verificar cambios en los nombres de los archivos? No hice ningún cambio en el archivo en sí.


831
2017-07-16 17:41


origen


Respuestas:


Puedes usar git mv:

git mv -f OldFileNameCase newfilenamecase

1055
2018-01-03 15:57



Git tiene una configuración que le dice si debe distinguir entre mayúsculas y minúsculas o es insensible: core.ignorecase. Para decirle a Git que sea sensible a las mayúsculas y minúsculas, simplemente configure esta configuración para false:

git config core.ignorecase false

Documentación

Desde el git config documentación:

core.ignorecase

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

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

Sistemas de archivos insensibles a las mayúsculas y minúsculas

Los dos sistemas operativos más populares que tienen sistemas de archivos insensibles a mayúsculas y minúsculas que conozco son

  • Windows
  • OS X

673
2017-07-16 22:52



Esto es lo que hice en OS X:

git mv File file.tmp
git mv file.tmp file

Dos pasos porque de lo contrario obtuve un error de "archivo existe". Tal vez se puede hacer en un solo paso al agregar --cached o tal.


83
2017-11-13 14:27



Usando SourceTree, pude hacer todo esto desde la interfaz de usuario

  • Rebautizar FILE.ext a whatever.ext
  • Etapa ese archivo
  • Ahora cambie el nombre whatever.ext a file.ext
  • Etapa ese archivo de nuevo

Es un poco tedioso, pero si solo necesitas hacerlo en algunos archivos, es bastante rápido


65
2017-10-28 14:40



En OSX, para evitar este problema y evitar otros problemas al desarrollar un sistema de archivos que no distingue entre mayúsculas y minúsculas, puede usar la Utilidad de Discos para crear un caso sensible unidad virtual / imagen de disco.

Ejecute la utilidad de disco, cree una nueva imagen de disco y use la siguiente configuración (o cambie como quiera, pero manténgala en mayúsculas y minúsculas):

Mac Disk Utility Screenshot

Asegúrate de decirle a git que ahora está en un FS sensible a mayúsculas y minúsculas:

git config core.ignorecase false

36
2017-10-03 19:18



1) cambiar el nombre del archivo Name.jpg a name1.jpg

2) cometer el archivo eliminado Name.jpg

3) cambiar el nombre del archivo name1.jpg a name.jpg

4) archivo agregado de ammend name.jpg al compromiso anterior

git add
git commit --amend

12
2017-10-03 19:13



Probé las siguientes soluciones de las otras respuestas y no funcionaron:

Si su repositorio está alojado en GitHub como el mío, puede cambiar el nombre del archivo en el origen (GitHub.com) y forzar el cambio de nombre del archivo de arriba hacia abajo. Esto es lo que hice:

  1. Visita GitHub.com
  2. Navegue a su repositorio en GitHub.com y seleccione la rama en la que está trabajando
  3. Navegue hasta el archivo que desea cambiar de nombre utilizando la herramienta de navegación de archivos del sitio.
  4. Haga clic en el ícono "Editar este archivo" (se ve como un lápiz)
  5. Cambiar el nombre de archivo en el ingreso de texto del nombre de archivo
  6. Asegúrese de "Comprometerse directamente con el branchname rama "botón de radio es seleccionado
  7. Haga clic en el botón "Confirmar cambios"
  8. Localmente, checkout / pull / fetch the branch
  9. Hecho

5
2017-10-31 18:22



He enfrentado este problema varias veces en MacOS. Git distingue entre mayúsculas y minúsculas, pero Mac solo conserva las mayúsculas y minúsculas.

Alguien comete un archivo: Foobar.java y después de unos días decide cambiarle el nombre a FooBar.java. Cuando extrae el último código falla con The following untracked working tree files would be overwritten by checkout...

La única manera confiable que he visto que soluciona esto es:

  1. git rm Foobar.java
  2. Comprométalo con un mensaje que no puedes perderte git commit -m 'TEMP COMMIT!!'
  3. Halar
  4. Esto generará un conflicto que lo forzará a fusionar el conflicto, porque su cambio lo eliminó, pero el otro cambio lo cambió de nombre (de ahí el problema).
    1. Acepte su cambio, que es la 'eliminación'
    2. git rebase --continue
  5. Ahora abandone su solución git rebase -i HEAD~2 y drop el TEMP COMMIT!!
  6. Confirme que el archivo ahora se llama FooBar.java

3
2017-08-05 17:23



Algunas veces es útil temporalmente cambiar la sensibilidad de caso de Git. Aquí hay dos métodos posibles:

Método 1:

git -c core.ignorecase=  <<true or false>>  <<command>> se puede usar para cambiar la sensibilidad de mayúsculas y minúsculas para un solo comando. P.ej: git -c core.ignorecase=true checkout mybranch. (Crédito a VonC por sugerir esto en los comentarios).

Método 2:

Para cambiar la configuración por más tiempo (por ejemplo, si se deben ejecutar varios comandos antes de volver a cambiarlo):

  1. git config core.ignorecase (esto devuelve la configuración actual, p. false)
  2. git config core.ignorecase  <<true or false>> - establecer la nueva configuración deseada.
  3. ... Ejecuta varios otros comandos ...
  4. git config core.ignorecase  <<false or true>> - restablecer el valor de configuración a su configuración anterior.

2
2017-07-10 11:05



Cuando ha realizado un cambio de nombre de archivo y parte del mismo es solo un cambio de envoltura, es difícil recordar cuál es cuál. manualmente "git moving" el archivo puede ser bastante trabajo. Entonces, lo que haría durante las tareas de cambio de mi nombre de archivo son:

  1. elimine todos los archivos y carpetas que no sean Git en una carpeta / repositorio diferente.
  2. confirmar la carpeta de git vacía actual (esto se mostrará como todos los archivos eliminados)
  3. vuelva a agregar todos los archivos en la carpeta / repositorio original de git.
  4. confirmar la carpeta actual de git no vacía

Esto solucionará todos los problemas del caso sin tratar de averiguar qué archivos o carpetas ha cambiado de nombre.


1
2018-04-29 11:00