Por alguna razón, cuando inicialmente hice una extracción del repositorio para un proyecto de git mío, obtuve una tonelada de archivos en mi copia de trabajo que no tienen cambios perceptibles, pero siguen apareciendo en mi unstaged changes
área.
Estoy usando Git Gui en Windows xp, y cuando voy a mirar el archivo para ver qué ha cambiado. Todo lo que veo es:
old mode 100755
new mode 100644
Alguien sabe que significa esto?
¿Cómo puedo sacar estos archivos de mi lista de cambios no organizados? (Muy molesto tener que pasar por cientos de archivos, solo para elegir los archivos que he editado recientemente y quiero comprometer).
git update-index --chmod=(+|-)x <path>
.git config --global ...
para configurar la opción en su archivo de configuración global.Configuración
core.filemode
de falsa funciona, pero asegúrese de que las configuraciones en~/.gitconfig
que no están siendo anulado por los de.git/config
.fuente
~/.gitconfig
archivo!git config --list --show-origin | sls filemode
o en Linuxgit config --list --show-origin | grep filemode
. Esto le mostrará dónde necesita hacer los ajustes.He encontrado este problema al copiar un repositorio de git con archivos de trabajo de un disco duro viejo un par de veces. El problema surge del hecho de que el propietario y los permisos cambiaron de la unidad / máquina antigua a la nueva. En resumen, ejecute los siguientes comandos para enderezar las cosas ( gracias a esta respuesta del superusuario ):
El primer comando en realidad resolverá las diferencias que informó git diff, pero revocará su capacidad para enumerar los directorios, por lo que
ls ./
fallals: .: Permission denied
. Para arreglar eso:La mala noticia es que si tiene algún archivo que desee mantener ejecutable, como
.sh
scripts, deberá revertirlos. Puede hacerlo con el siguiente comando para cada archivo:fuente
git config core.filemode
esté configurado entrue
, de lo contrario no se detectarán cambios en los permisos. También necesitaba actualizar el índice git después de cada cambio para recogerlo.Por lo general, ocurre cuando el repositorio se clona entre máquinas Windows y Linux / Unix.
Solo dile a git que ignore el cambio en el modo de archivo, aquí hay varias maneras:
Configuración SOLO para el repositorio actual:
Configuración global:
Agregue ~ / .gitconfig:
Solo selecciona uno de ellos.
fuente
Parece que ha cambiado algunos permisos del directorio. Hice los siguientes pasos para restaurarlo.
fuente
Puede intentar git reset --hard HEAD para restablecer el repositorio al estado predeterminado esperado.
fuente
git reset --hard HEAD
Funcionó perfectamente para mí. graciasMe he enfrentado al mismo problema. Y esto me salvó la vida: https://gist.github.com/jtdp/5443498
fuente
Esto sucede cuando extrae y todos los archivos eran ejecutables en el repositorio remoto. Hacerlos ejecutables nuevamente restablecerá todo a la normalidad nuevamente.
Es posible que deba hacer:
en cambio, para archivos que no se establecieron como ejecutables y que se modificaron debido a la operación anterior. Hay una mejor manera de hacer esto, pero esta es solo una solución rápida y sucia.
fuente
Puede usar el siguiente comando para volver a cambiar el modo de archivo.
git add --chmod=+x -- filename
Luego comprométete con la rama.fuente
Solo tenía un archivo problemático con los permisos modificados. Para revertirlo individualmente, simplemente lo eliminé manualmente
rm <file>
y luego realicé un pago para obtener una copia nueva.Por suerte aún no lo había puesto en escena.
Si lo hubiera hecho, podría haber corrido
git reset -- <file>
antes de corrergit checkout -- <file>
fuente
Me encontré con este problema al diferenciar mi rama con master. Git devolvió un error de 'modo' cuando esperaba que mi rama fuera idéntica a la maestra. Lo arreglé eliminando el archivo y luego fusionando master nuevamente.
Primero ejecuté el diff:
Esto regresó:
Luego ejecuté lo siguiente para solucionarlo:
Después de esto,
git diff
no devolvió diferencias entre my-branch y master.fuente