Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止git使文件在cygwin上不可执行?_Git_Permissions_Cygwin - Fatal编程技术网

如何阻止git使文件在cygwin上不可执行?

如何阻止git使文件在cygwin上不可执行?,git,permissions,cygwin,Git,Permissions,Cygwin,我通过cygwin在Windows上使用git,并很快决定使用filemode=false(因为在最初的git克隆之后,我做了很多更改)。我肯定对跟踪权限一点也不感兴趣,我唯一需要的是一些文件是可执行的。有时,我会发现一些文件上的x标志丢失,我强烈认为这是因为git 如果有一个解决方案允许在需要时执行chmoda+x…。我相信您需要git更新索引--chmod=+x,然后提交 我也遇到了同样的问题。 git更新索引——chomd=+x对我不起作用 我使用chmod+x,然后提交,它工作得非常完美

我通过cygwin在Windows上使用git,并很快决定使用
filemode=false
(因为在最初的git克隆之后,我做了很多更改)。我肯定对跟踪权限一点也不感兴趣,我唯一需要的是一些文件是可执行的。有时,我会发现一些文件上的
x
标志丢失,我强烈认为这是因为git


如果有一个解决方案允许在需要时执行
chmoda+x…

我相信您需要
git更新索引--chmod=+x
,然后提交

我也遇到了同样的问题。 git更新索引——chomd=+x对我不起作用


我使用chmod+x,然后提交,它工作得非常完美。

您应该从git update index--chmod=+x开始

但这不会改变您的工作副本,因为:

git checkout .

我不认为这有什么帮助,因为我使用的是
filemode=false
,所以我假设我必须在从git中获取文件后做一些事情(而不是将它们放在git中)。当git更改或创建文件时应用的东西。此外,它应该自动运行。特别建议将此命令用于filemode=false的系统。如果我理解正确,该设置仅适用于权限更改的自动检测。Git仍然存储一个filemode,这是执行Git ls树头时的第一列。如果它显示为644而不是755,那么git在写入该文件时不会设置可执行位。不知怎的,我想,它会禁用存储位,但“索引和工作副本之间的可执行位差异被忽略”取而代之。。。它可以工作,但如果我签出旧版本,当然不行。这是我在第一次提交可执行文件之后应该做的事情(不是太迟了,因为我真的不想重新确定整个历史的基础)。它并不完美,但很有帮助,谢谢。我使用的是Cygwin版本的git。我的同事使用“gitbash”shell,它使用MSYS而不是Cygwin。他们应该愉快地一起工作,但是其他人签入的*.bat文件似乎对他们来说是可执行的,但对我来说不是。我认为MSYS在创建*.bat文件时会隐式地使其可执行,但在签入时不会费心保留可执行位;Cygwin不会这么做的。(我运行
chmod+x
并在需要时签入它们。)或者使用更新索引、提交、再次签出文件。