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

5

背景

我有一个SSH配置文件,放在一个仓库中,并被那些运行自动化测试的系统克隆。我使用 Linux(目标机器也是),不小心将第一个版本的该文件的权限字段设置为了 664。由于组可写权限,OpenSSH 拒绝该配置文件。

我需要更改该文件的权限位为 644 并提交这个更改,但 Git 没有将该文件识别为已更改的文件。

问题

我该如何更新仓库中该文件的写入权限?

尝试解决方法

  • git add config --force
    该文件未被添加
  • git config core.filemode true
    该文件仍被列为未更改文件
  • git rm --cached config
    Git 显示该文件已被删除,但 "git add config" 后报告没有更改
  • 更改权限位并在文件中添加一行,提交该更改并将其推送至服务器
    在另一台机器上拉取该更改后,新的空白行存在,但新的权限位未被传播 - 它们仍为 664

其他研究

根据 这个线程,Git 只会识别执行位的更改。我尝试更改执行位,Git 识别了该更改并允许我提交。但我不想设置执行权限位。

这个 Stack Overflow 问题 建议使用 git-cache-meta 存储除执行位以外的权限位,但该解决方法需要修改存储仓库的远程服务器,而我没有控制该服务器的权限。

我查看了以下 SO 问题,但它们没有帮助到我:
如何强制 Git 提交一个已被识别为未更改的文件?
只更新 Git 中的文件权限

也有多个关于让 Git 忽略权限位更改的问题,但几乎所有答案都围绕着 filemode 配置选项,这对此处无济于事。

1个回答

0
以下问题已有答案:当我推送到服务器时,Git会更改我的文件权限 那么如何更新存储库中的文件写入权限呢?你不能,因为读/写权限实际上并没有存储在存储库中。
我的建议是,在克隆存储库后添加一个更改权限的脚本,或者如果当前权限阻止了某些操作,则添加一些代码,在执行操作之前更改权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接