背景
我有一个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 配置选项,这对此处无济于事。