232

刚刚将some.sh文件转换为可执行文件 ( chmod 755 ...),权限已更新,但内容未更新。有没有办法将文件提交到 git 中,以便在clone / checkout / pull时恢复/设置可执行位?

更新:如何跟踪新权限已提交到github

4

3 回答 3

261

@fooMonster 文章对我有用

# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

如您所见,该文件具有 644 权限(忽略 100)。我们想将其更改为 755:

# git update-index --chmod=+x script.sh

提交更改

# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
于 2014-01-12T04:39:04.070 回答
224

默认情况下,如果您更改它们,git 将更新执行文件权限。它不会更改或跟踪任何其他权限。

如果您在修改执行权限时没有看到任何更改,您可能在 git 中有一个忽略文件模式的配置。

查看您的项目,在文件所在的.git文件夹中config,您应该会看到如下内容:

[core]
    filemode = false

您可以true在您喜欢的文本编辑器中将其更改为,或运行:

git config core.filemode true

然后,您应该能够正常提交您的文件。它只会提交权限更改。

于 2012-05-09T12:45:31.690 回答
33

不为我工作。

模式为真,文件权限已更改,但 git 说没有工作可做。

git init
git add dir/file
chmod 440 dir/file
git commit -a

问题似乎是 git 只识别某些权限更改。

于 2013-06-26T18:38:56.050 回答