You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用git clone创建与git init --shared权限一致的共享仓库

克隆Git仓库时实现与git init --shared相同的共享权限配置方法

注意:git clone自带的--shared参数与git init的--shared参数作用完全不同:前者是让克隆仓库通过硬链接复用源仓库的Git对象以节省磁盘空间,和多用户访问的权限配置无关,不要混淆。

方案1:克隆后重新执行git init --shared(最稳妥,推荐)

对已经存在的Git仓库执行git init --shared不会覆盖现有提交数据,只会重新设置仓库的共享权限配置和目录权限位,和直接用git init --shared创建的仓库效果完全一致:

  • 第一步:按正常流程克隆仓库,多用户共享的中央仓库建议加--bare参数创建裸仓库
    git clone --bare <源仓库地址> <目标共享仓库路径>
    
  • 第二步:进入克隆生成的仓库目录,重新初始化共享配置,参数和你使用git init --shared时的权限参数保持一致(常用值为group代表组内用户共享,all代表所有用户均可访问)
    cd <目标共享仓库路径>
    git init --shared=<权限模式> --bare
    
  • 第三步(可选):如果需要指定特定用户组访问仓库,递归修改仓库的属组并开启setgid位,保证后续新建文件自动继承目录的用户组权限
    chgrp -R <共享用户组名> .
    chmod -R g+s .
    

方案2:克隆时直接指定共享配置

也可以在克隆命令中直接传入共享配置参数,克隆完成后手动修正一次文件权限即可:

  • 执行带配置参数的克隆命令,core.sharedRepository的取值和git init --shared的参数一致
    git clone --bare --config core.sharedRepository=<权限模式> <源仓库地址> <目标共享仓库路径>
    
  • 进入仓库目录,递归修正现有文件的组权限:
    cd <目标共享仓库路径>
    chmod -R g+rwX .
    chmod -R g+s .
    

验证配置是否生效

执行以下命令,输出对应权限值(比如group/true)代表配置生效:

git config core.sharedRepository

查看目录权限,确认用户组有读写执行权限、setgid位已开启即可。

内容的提问来源于stack exchange,提问作者GOVarney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:03