2011-08-13 82 views
54

我在Windows上通过cygwin使用git,很快就决定使用filemode=false(因为否则我在初始git克隆后会发生很多变化)。我绝对不会对跟踪权限感兴趣,唯一需要考虑的是某些文件是可执行的。不时,我发现某些文件上的x标志会丢失,我强烈认为这是因为git。如何阻止git使cygwin上的文件不可执行?

我很高兴能够在需要时执行chmod a+x ...的解决方案。

回答

95

我相信你想git update-index --chmod=+x <file>,然后提交。

+0

我不认为这会有所帮助,因为我使用'FILEMODE = FALSE',所以我想我以后做什么从git中获取文件(而不是把它们放在git中)。每当git更改或创建文件时都会应用这些内容。而且,它应该自动运行。 – maaartinus

+2

[The docs](http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html#_configuration)特别向filemode = false的系统推荐此命令。如果我理解正确,则该设置仅适用于_automatic_检测权限更改。 Git仍然存储一个文件模式,这是您执行'git ls-tree HEAD'时的第一列。如果它显示为644而不是755,那么git在写入该文件时不会设置可执行位。 –

+0

我看到我误解了'filemode = false'。不知何故,我想,它会禁用存储的位,但“索引和工作副本之间的可执行位差异被忽略”,而不是。 – maaartinus

4

我遇到了同样的问题。 git update-index --chomd = + x不适用于我。

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

+0

或者使用update-index,commit,再次检出文件。 –

5

您应该从git update-index --chmod=+x <file>开始。

但是这并不会改变你的工作拷贝,为:

git checkout .