Tengo un pago git. Todos los permisos de archivo son diferentes de lo que git cree que deberían ser, por lo tanto, todos se muestran como modificados.
Sin tocar el contenido de los archivos (solo quiero modificar los permisos), ¿cómo configuro todos los permisos de archivos a lo que git cree que deberían ser?
git
file
file-permissions
Dale Forester
fuente
fuente
Respuestas:
Git realiza un seguimiento del permiso de archivos y expone los cambios de permisos al crear parches usando
git diff -p
. Entonces todo lo que necesitamos es:Como una línea:
también puede agregarlo como un alias a su configuración de git ...
... y puedes invocarlo a través de:
Tenga en cuenta que si su shell es
bash
, asegúrese de usar en'
lugar de"
comillas alrededor de!git
, de lo contrario se sustituye con el últimogit
comando que ejecutó.Gracias a @Mixologic por señalar que simplemente usando
-R
ongit diff
, el engorrososed
comando ya no es necesario.fuente
fatal: unrecognized input
Tratar
git config core.fileMode false
Desde la
git config
página del manual:fuente
git checkout origin/master
establezca permisos de archivo comprometidos con el servidor para mi copia de trabajo local? Porque cada vez que compilo V8 para ArangoDB, los permisos del archivo cambian para que el acceso sea denegado a toda la carpeta de compilación (incluso con derechos elevados; Windows 7+). Necesito corregir todos los permisos de archivos locales antes de poder continuar con el proceso de compilación. ¿Puedecore.filemode false
arreglar eso también? Sospecho que git establece permisos de Linux en mi máquina Windows. Los scripts de compilación podrían preservarlos y aplicar los mismos permisos a los archivos recién creados ...filemode
afalse
!Git no almacena permisos de archivo que no sean scripts ejecutables. Considera usar algo como git-cache-meta para guardar la propiedad y los permisos del archivo.
Git solo puede almacenar dos tipos de modos: 755 (ejecutable) y 644 (no ejecutable). Si su archivo fuera 444 git lo almacenaría, tiene 644.
fuente
umask
, así como una configuración, consulte stackoverflow.com/a/12735291/125150 ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
funcionará en la mayoría de los casos, pero si tiene instaladas herramientas externas de diferencia como meld, debe agregar --no-ext-diff
era necesario en mi situación
fuente
También puede intentar un gancho de pago previo / posterior puede hacer el truco.
Ver: Personalizar Git - Git Hooks
fuente
Uso git de cygwin en Windows, la
git apply
solución no me funciona. Aquí está mi solución, ejecutarchmod
en cada archivo para restablecer sus permisos.fuente
git diff -p
usado en la respuesta de muhqu puede no mostrar todas las discrepancias.core.filemode
esfalse
(que es el valor predeterminado para MSysGit)Este código lee los metadatos directamente en su lugar:
Una sola línea de grado no de producción (reemplaza las máscaras por completo):
(El crédito para "$ '\ 0'" va a http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
fuente
Lo más fácil es cambiar de nuevo los permisos. Como señaló @kroger, git solo rastrea bits ejecutables. Por lo tanto, probablemente solo necesite ejecutarlo
chmod -x filename
para solucionarlo (o+x
si eso es lo que se necesita.fuente
git show
: diff --git a / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java b / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java index cd6fa6a..e5b0935 100644 That poco en negrita están los permisos de archivo.100644
a100755
. No creo que merezca un voto negativo; Git debería ser rechazado. Está tan roto de muchas maneras en tantos niveles diferentes ...La
etckeeper
herramienta puede manejar permisos y con:Puede usarlo para otros directorios que no sean
/etc
.Instale utilizando su administrador de paquetes u obtenga fuentes del enlace anterior.
fuente