Yo uso Git en Windows, y quiero empujar el script de shell ejecutable al repositorio de git mediante un commit.
Por lo general, necesito hacer dos pasos ( git commit
).
$ vi install.sh
$ git add install.sh
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
1 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission" # second commit
[master 317ba0c] update file permission
0 files changed
mode change 100644 => 100755 install.sh
¿Cómo puedo combinar estos dos pasos en uno solo? configuración de git? comando de windows?
Recuerde : dos respuestas son buenas, git add --chmod=+x file
es compatible con la nueva versión de git
Referencia: consulte la pregunta en Permisos de archivos Git en Windows para la segunda confirmación
git add --chmod=+x
es realmente posible. Vea mi respuesta a continuación , crédito a Edward Thomson .git add --chmod=+x
Respuestas:
No es necesario hacer esto en dos confirmaciones, puede agregar el archivo y marcarlo como ejecutable en una única confirmación:
Como observa, después de agregar, el modo es 0644 (es decir, no ejecutable). Sin embargo, podemos marcarlo como ejecutable antes de confirmar:
Y ahora el archivo está en modo 0755 (ejecutable).
Y ahora tenemos una única confirmación con un solo archivo ejecutable.
fuente
git 2.9.x / 2.10 (Q3 2016) realmente permitirá eso (gracias a Edward Thomson ):
Eso hace que todo el proceso sea más rápido y funciona incluso si
core.filemode
está configurado en falso.Ver commit 4e55ed3 (31 de mayo de 2016) por Edward Thomson (
ethomson
) .Ayudado por: Johannes Schindelin (
dscho
) .(Fusionada por Junio C Hamano -
gitster
- en commit c8b080a , 06 jul 2016)fuente
Si los archivos ya tienen establecido el indicador + x,
git update-index --chmod=+x
no hace nada y git piensa que no hay nada que confirmar, aunque el indicador no se guarde en el repositorio.Primero debe eliminar la bandera, ejecutar el comando git y luego volver a colocar la bandera:
entonces git ve un cambio y le permitirá confirmarlo.
fuente
La nota es, en primer lugar, debe asegurarse de
filemode
establecerfalse
en el archivo de configuración git, o usar este comando:y luego puede establecer el permiso 0777 con este comando:
fuente
No tengo
touch
ychmod
comando en mi cmd.exe ygit update-index --chmod=+x foo.sh
no funciona para mí.Finalmente lo resuelvo estableciendo
skip-worktree
bit:fuente