在我的服务器上,我有一个 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
文件夹的写入权限。
您可以在网络根目录之上跟踪您的项目,这样网络服务器就无法访问它。
否则,您可以在其他地方克隆存储库,并仅将需要的符号链接到网络根目录中