log - git remove tag
¿Cómo crear permisos de modo de ejecución de archivos en Git en Windows? (5)
Utilizo Git en Windows, y quiero empujar el script de shell ejecutable en git repo por una confirmación.
Normalmente 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 un solo paso? configuración git? comando de windows?
Recuerde : dos respuestas son buenas, git add --chmod=+x file
es compatible con la nueva versión de git
Referencia: vea la pregunta en permisos de archivos Git en Windows para la segunda confirmación
De hecho, sería bueno si
git-add
tuviera una--mode
git 2.9.x / 2.10 (Q3 2016) en realidad permitirá que (gracias a ):
git add --chmod=+x -- afile
git commit -m"Executable!"
Eso hace que todo el proceso sea más rápido y funciona incluso si core.filemode
se establece 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
- in commit c8b080a , 06 jul 2016)
add
: agregar--chmod=+x
/--chmod=-x
opcionesEl bit ejecutable no se detectará (y, por lo tanto, no se establecerá) para las rutas en un repositorio con
core.filemode
configurado en falso, aunque los usuarios pueden desear agregar archivos como ejecutables para la compatibilidad con otros usuarios que sí tienencore.filemode
funcionalidad
Por ejemplo, los usuarios de Windows que agreguen scripts de shell pueden desear agregarlos como ejecutables para la compatibilidad con usuarios que no son de Windows.Aunque esto se puede hacer con un comando de plomería (
git update-index --add --chmod=+x foo
), enseñar el comandogit-add
permite a los usuarios configurar un archivo ejecutable con un comando con el que ya están familiarizados .
La nota es, en primer lugar, debe asegurarse de que el modo de archivo se haya establecido en false
en el archivo de configuración git, o usar este comando:
git config core.filemode false
y luego puedes establecer el permiso 0777 con este comando:
git update-index --chmod=+x foo.sh
No hay necesidad de hacer esto en dos confirmaciones, puede agregar el archivo y marcarlo como ejecutable en una única confirmación:
C:/Temp/TestRepo>touch foo.sh
C:/Temp/TestRepo>git add foo.sh
C:/Temp/TestRepo>git ls-files --stage
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 foo.sh
Como nota, después de agregar, el modo es 0644 (es decir, no es ejecutable). Sin embargo, podemos marcarlo como ejecutable antes de cometer:
C:/Temp/TestRepo>git update-index --chmod=+x foo.sh
C:/Temp/TestRepo>git ls-files --stage
100755 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 foo.sh
Y ahora el archivo está en modo 0755 (ejecutable).
C:/Temp/TestRepo>git commit -m"Executable!"
[master (root-commit) 1f7a57a] Executable!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100755 foo.sh
Y ahora tenemos una única confirmación con un solo archivo ejecutable.
Si los archivos ya tienen establecido el indicador + x, git update-index --chmod=+x
no hace nada y git cree que no hay nada que cometer, aunque el indicador no se esté guardando en el repositorio.
Primero debe eliminar el indicador, ejecutar el comando git y luego volver a colocar el indicador:
chmod -x <file>
git update-index --chmod=+x <file>
chmod +x <file>
entonces git ve un cambio y le permitirá cometer el cambio.
Tienes que ejecutar el siguiente comando:
git update-index --chmod=+x <file>
¡Comprométete a git y deberías irte!