He cambiado el nombre de algunos archivos por de-mayúscula la primera letra, como en Name.jpg
a name.jpg
. Git no reconoce estos cambios y tuve que eliminar los archivos y subirlos nuevamente. ¿Hay alguna manera de que Git distinga entre mayúsculas y minúsculas al verificar los cambios en los nombres de archivo? No he realizado ningún cambio en el archivo en sí.
git
case-sensitive
git-commit
git-config
Gil Shulman
fuente
fuente
git mv
funciona.Respuestas:
Puedes usar git mv :
fuente
-f
bandera.-f
interruptor con la última Git (2.18) de lo contrario podría obtener elfatal: destination exists
error.Git tiene un valor de configuración que le dice si sea sensible a mayúsculas o minúsculas:
core.ignorecase
. Para decirle a Git que distinga entre mayúsculas y minúsculas, simplemente establezca esta configuración enfalse
:Documentación
De la
git config
documentación :Sistemas de archivos que no distinguen entre mayúsculas y minúsculas
Los dos sistemas operativos más populares que tienen sistemas de archivos que no distinguen entre mayúsculas y minúsculas que conozco son
fuente
false
en un sistema de archivos que no distingue entre mayúsculas y minúsculas es una mala idea . Esto no es necesariamente obvio. Por ejemplo, acabo de probar esto en mi Mac, pensando que solucionaría mis problemas, luego cambié el nombre de un archivo deproductPageCtrl.js
aProductPageCtrl.js
.git status
vi un nuevo archivo llamadoProductPageCtrl.js
pero no pensé que seproductPageCtrl.js
hubiera eliminado. Cuando agregué los nuevos archivos, me comprometí y empujé a GitHub, el repositorio de GitHub ahora contenía ambos archivos a pesar de que mi (supuestamente actualizado) repositorio local tenía solo uno.git mv
para mover el archivo y ver cómo lo maneja git. Si mueve el archivo sin git, no hay nada que git pueda hacer ya que el sistema de archivos no dice la verdad a git. Este es un problema de ntfs / fat / hfs y similares y no de git / linux.Usando SourceTree pude hacer todo esto desde la interfaz de usuario
FILE.ext
awhatever.ext
whatever.ext
afile.ext
Es un poco tedioso, pero si solo necesita hacerlo en algunos archivos, es bastante rápido
fuente
Esto es lo que hice en OS X:
Dos pasos porque de lo contrario recibí un error de "archivo existe". Quizás se pueda hacer en un solo paso agregando
--cached
o algo así.fuente
-f
(force) es la bandera que estás buscando-f
indicador no ayuda en caso de que el FS subyacente no distinga entre mayúsculas y minúsculas. Sin embargo, la solución de dos pasos funcionó para mí-f
funcionó! Gracias por el consejo-f
bandera.git -c "core.ignorecase=false" add .
considerará los archivos cuyo caso ha sido cambiado para commit.A veces es útil cambiar temporalmente la sensibilidad a mayúsculas y minúsculas de Git:
Método n. ° 1: cambiar la distinción entre mayúsculas y minúsculas para un solo comando:
git -c core.ignorecase=true checkout mybranch
para desactivar mayúsculas y minúsculas para un solocheckout
comando. O más en general: . (Gracias a VonC por sugerir esto en los comentarios).git -c core.ignorecase=
<<true or false>>
<<command>>
Método n. ° 2: cambie la distinción entre mayúsculas y minúsculas para varios comandos:
Para cambiar la configuración por más tiempo (por ejemplo, si se deben ejecutar varios comandos antes de volver a cambiarla):
git config core.ignorecase
(esto devuelve la configuración actual, por ejemplofalse
).git config core.ignorecase
<<true or false>>
- establecer la nueva configuración deseada.git config core.ignorecase
<<false or true>>
- restablecer el valor de configuración a su configuración anterior.fuente
git -c core.ignorecase=<true or false> checkout <<branch>>
? Nada para restablecer después.En OSX, para evitar este problema y evitar otros problemas con el desarrollo en un sistema de archivos que no distingue entre mayúsculas y minúsculas, puede usar la Utilidad de Discos para crear una imagen de disco / unidad virtual sensible a mayúsculas y minúsculas .
Ejecute la utilidad de disco, cree una nueva imagen de disco y use la siguiente configuración (o cambie como desee, pero manténgala entre mayúsculas y minúsculas):
Asegúrate de decirle a git que ahora está en un FS sensible a mayúsculas y minúsculas:
fuente
Intenté las siguientes soluciones de las otras respuestas y no funcionaron:
git mv filename
git rm -f filename
Si su repositorio está alojado de forma remota (GitHub, GitLab, BitBucket), puede cambiar el nombre del archivo en origen (GitHub.com) y forzar el cambio de nombre de arriba a abajo.
Las instrucciones a continuación pertenecen a GitHub, sin embargo, la idea general detrás de ellas debería aplicarse a cualquier plataforma remota de alojamiento de repositorios. Tenga en cuenta que el tipo de archivo que está intentando cambiar el nombre es importante, es decir, si es un tipo de archivo que GitHub considera editable (código, texto, etc.) o no editable (imagen, binario, etc.) dentro del navegador.
branchname
esté seleccionado el botón de opción "Confirmar directamente a la rama" y haga clic en el botón "Confirmar cambios"branchname
esté seleccionado el botón de opción "Confirmar directamente a la rama" y haga clic en el botón "Confirmar cambios"fuente
Similar a la respuesta de @ Sijmen, esto es lo que funcionó para mí en OSX al cambiar el nombre de un directorio (inspirado en esta respuesta de otra publicación):
Simplemente hacerlo
git mv CSS css
dio el error de argumento no válido:fatal: renaming '/static/CSS' failed: Invalid argument
quizás porque el sistema de archivos de OSX no distingue entre mayúsculas y minúsculasps BTW si está utilizando Django, collectstatic tampoco reconocería la diferencia de mayúsculas y minúsculas y tendría que hacer lo anterior, manualmente, también en el directorio raíz estático
fuente
1) cambiar el nombre del archivo
Name.jpg
aname1.jpg
2) confirmar el archivo eliminado
Name.jpg
3) renombrar archivo
name1.jpg
aname.jpg
4) ammend agregó el archivo
name.jpg
al commit anteriorfuente
fatal: bad source, source=name1.jpg, destination=name.jpg
en el paso 3. ¿Tiene alguna sugerencia? Thxgit add
.Usé los siguientes pasos:
Para mi es una solución simple
fuente
Podemos usar el comando git mv. Ejemplo a continuación, si cambiamos el nombre del archivo abcDEF.js a abcdef.js, entonces podemos ejecutar el siguiente comando desde la terminal
fuente
Mac OSX High Sierra 10.13 soluciona esto de alguna manera. Simplemente haga una partición APFS virtual para sus proyectos git, por defecto no tiene límite de tamaño y no ocupa espacio.
Sensitive
git
yln -s /Volumes/Sensitive/git /Users/johndoe/git
Tu unidad estará en
/Volumes/Sensitive/
¿Cómo confirmo cambios de nombre de archivo que distinguen entre mayúsculas y minúsculas en Git?
fuente
Me he enfrentado a 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 nombreFooBar.java
. Cuando extrae el último código, falla conThe following untracked working tree files would be overwritten by checkout...
La única forma confiable que he visto que soluciona esto es:
git rm Foobar.java
git commit -m 'TEMP COMMIT!!'
git rebase --continue
git rebase -i HEAD~2
ydrop
elTEMP COMMIT!!
FooBar.java
fuente
Cuando ha cambiado mucho el nombre de los archivos y algunos de ellos son solo un cambio de carcasa, es difícil recordar cuál es cuál. manualmente "git moving" el archivo puede ser bastante trabajo. Entonces, lo que haría durante mis tareas de cambio de nombre de archivo son:
Esto solucionará todos los problemas del caso sin intentar averiguar qué archivos o carpetas ha cambiado de nombre.
fuente
git commmit --amend
en el párrafo 4? De lo contrario, habrá una confirmación adicional con la eliminación de todos los archivos. O puedes usargit rebase -i
con calabaza.Si nada funcionó, use git rm filename para eliminar el archivo del disco y agregarlo nuevamente.
fuente
Tomé @CBarr respuesta y escribió un script en Python 3 de hacerlo con una lista de archivos:
fuente