tipos tag sirve remove qué para oneline nos log hace existen etiquetas cuando crear creamos git case-sensitive git-commit git-config

tag - ¿qué hace git log-oneline?



¿Cómo confirmo cambios de nombre de archivo que solo distinguen mayúsculas y minúsculas en Git? (11)

1) renombrar el archivo Name.jpg a name1.jpg

2) cometer archivo eliminado Name.jpg

3) renombrar archivo name1.jpg a name.jpg

4) enmendar el archivo agregado name.jpg a confirmación anterior

git add git commit --amend

He cambiado el nombre de algunos archivos descapitalizando la primera letra, como en Name.jpg a name.jpg . Git no reconoce estos cambios y tuve que eliminar los archivos y volver a cargarlos. ¿Hay alguna forma en que Git pueda distinguir entre mayúsculas y minúsculas al verificar cambios en los nombres de los archivos? No he hecho ningún cambio en el archivo en sí.


A veces puede ser útil cambiar temporalmente la sensibilidad de Git. Dos posibles métodos: -

Método 1:

git -c core.ignorecase=true checkout mybranch para desactivar la distinción entre mayúsculas y minúsculas para un solo comando de git -c core.ignorecase=true checkout mybranch . O más generalmente: git -c core.ignorecase= <<true or false>> <<command>> . (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, por ejemplo, false ).
  2. git config core.ignorecase <<true or false>> : establezca la nueva configuración deseada.
  3. ... Ejecutar varios otros comandos ...
  4. git config core.ignorecase <<false or true>> : establezca el valor de configuración de nuevo en su configuración anterior.

Bajo 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 unidad de disco virtual / imagen que distingue entre mayúsculas y minúsculas.

Ejecute la utilidad de disco, cree una nueva imagen de disco y use la siguiente configuración (o modifíquela como desee, pero tenga en cuenta las mayúsculas):

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

git config core.ignorecase false


Cuando has hecho muchos cambios de nombre de 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:

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

Esto solucionará todos los problemas del caso sin tratar de averiguar a qué archivos o carpetas cambió el nombre.


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". Quizás se pueda hacer en un solo paso agregando --cached o similares.


Git tiene una configuración que le indica si debe distinguir entre mayúsculas y minúsculas o no: core.ignorecase . Para decirle a Git que tenga en cuenta el caso, simplemente establezca esta configuración en false :

git config core.ignorecase false

Documentación

De la documentación de git config :

core.ignorecase

Si es verdadero, esta opción habilita varias soluciones para 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 directorios encuentra makefile cuando git espera Makefile , git asumirá que realmente es el mismo archivo y continuará recordándolo como Makefile .

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

Sistemas de archivos insensibles a mayú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

  • Windows
  • OS X

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

Alguien confirma 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 forma confiable en que he visto que corrige esto es:

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

Mac OSX High Sierra 10.13 soluciona esto un poco. Simplemente haga una partición APFS virtual para sus proyectos git, de manera predeterminada, no tiene límite de tamaño y no ocupa espacio.

  1. En la Utilidad de Discos, haga clic en el botón + mientras se selecciona el disco Contenedor
  2. Seleccione APFS (mayúsculas y minúsculas) en formato
  3. Nómbrelo Sensitive
  4. Lucro
  5. Opcional: Cree una carpeta en Sensitive llamada git y ln -s /Volumes/Sensitive/git /Users/johndoe/git

Tu disco estará en /Volumes/Sensitive/

¿Cómo confirmo cambios de nombre de archivo que solo distinguen mayúsculas y minúsculas en Git?


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 origen (GitHub.com) y forzar el cambio de nombre del archivo de manera descendente. Esto es lo que hice:

  1. Visita GitHub.com
  2. Vaya a su repositorio en GitHub.com y seleccione la sucursal en la que está trabajando
  3. Navegue hasta el archivo que desea cambiar de nombre con la herramienta de navegación de archivos del sitio
  4. Haga clic en el icono "Editar este archivo" (parece un lápiz)
  5. Cambiar el nombre del archivo en la entrada de texto del nombre del archivo
  6. Asegúrese de que el botón de branchname "Confirmar directamente con la rama del branchname sucursal" esté seleccionado
  7. Haga clic en el botón "Confirmar cambios"
  8. Localmente, checkout / pull / fetch la rama
  9. Hecho

Puedes usar git mv :

git mv -f OldFileNameCase newfilenamecase


Usando SourceTree pude hacer todo esto desde la interfaz de usuario

  • Renombrar FILE.ext a whatever.ext que FILE.ext
  • Etapa ese archivo
  • Ahora renombra whatever.ext que whatever.ext file.ext a file.ext
  • Escenario ese archivo de nuevo

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