如何在Git中更新文件写入权限

时间:2016-01-27 22:14:55

标签: git version-control

背景

我将SSH的配置文件签入到由运行自动化测试的系统克隆的存储库中。我正在运行Linux(我的目标计算机也是如此),我不小心检查了文件的第一个版本,权限字段为664.由于组写权限,OpenSSH拒绝配置文件。

我需要将文件权限位更改为644并提交更改,但Git不会将文件识别为已更改。

问题

如何更新存储库中的文件写入权限?

分辨率尝试

  • git add config --force
    未添加文件
  • git config core.filemode true
    文件仍然列为未更改
  • git rm --cached config
    git将文件显示为已删除,但在" git add config"
  • 之后报告没有更改文件
  • 更改了权限位,并在文件中添加了一行,提交了更改,并将其推送到了 在另一台计算机上删除该更改后,出现了新的空行,但未传播新权限 - 它们仍为664

其他研究

根据this thread,Git只会识别执行位的变化。我测试了更改执行位,git 识别出该更改,并允许我提交它。但我不想设置执行权限位。

This SO question建议使用git-cache-meta来存储除执行位之外的权限位,但看起来该解决方案需要修改存储repo的远程服务器,并且我没有控制该服务器。

我已经咨询了以下SO问题,但他们没有帮助:
How to force Git to commit a file if it is recognized as unchanged
Updating file permissions only in git

关于让Git 忽略权限位更改还有很多问题,但答案几乎全部围绕filemode配置选项,这对此没有帮助。

1 个答案:

答案 0 :(得分:0)

以下问题的答案是:Git is changing my file's permissions when I push to server

那么如何更新存储库中的文件写权限?您不能,因为读/写权限实际上并未存储在存储库中。

我的建议是添加一个在克隆存储库后更改权限的脚本,或者如果您有当前权限阻止的操作,请添加一些在执行操作之前更改权限的代码。