index.lock 权限错误 - .git 由 root 拥有,工作树由其他用户拥有

index.lock 权限错误 - .git 由 root 拥有,工作树由其他用户拥有

在我的服务器上,我有一个 git 存储库,覆盖了一个可通过网络读取的目录。该特定用户目录的内容www将可由该用户读取和写入,但我希望该.git目录由 root 拥有。

有什么方法可以使 .git 目录具有足够的可读性,以便非 root 用户可以签出文件作为简单的恢复方法?不允许添加和提交(只有管理员实际上将更改标记为“已接受”,这可能会导致它们从暂存中升级),但理论上非特权用户应该可以读取.git和更改www.像git log和 这样的命令git show在此设置中没有问题,但尝试结帐失败:

$ git checkout www/some-file-name
fatal: Unable to create '/REDACTED/PATH/.git/index.lock': Permission denied

我可以要求 git 不锁定索引吗?我可以以某种方式允许锁定索引而不打开太多其他内容吗? (显然我无法使.git目录可写,因为这会丧失所有保护。)

注意:可以一次针对单个文件解决此问题:

$ git show HEAD:www/some-file-name >www/some-file-name

所以这显然不是一个根本性的限制。也许只是git checkout假设它正在进行分支切换?不过,这是管理通配符和目录树的最方便的方法。

编辑:这是不是谈论分支交换机。我希望能够用来git checkout查看单个文件。这就是为什么明显的答案在这里不适用。

答案1

你问的很矛盾。要在存储库上运行git checkout,用户需要对该.git文件夹的写入权限。

您可以在网络根目录之上跟踪您的项目,这样网络服务器就无法访问它。

否则,您可以在其他地方克隆存储库,并仅将需要的符号链接到网络根目录中

相关内容