git clone -c core.symlinks=true不生效,符号链接未创建的原因咨询
为什么Git克隆时的
core.symlinks=true临时参数不生效? 我来帮你拆解下这个问题的核心原因,其实是Git的临时配置规则+Windows系统的权限限制共同导致的:
临时配置不会写入本地仓库
你用-c core.symlinks=true参数时,这个配置只在git clone命令执行的单次会话里生效,克隆完成后,本地仓库的.git/config文件并不会自动添加这个配置项。所以克隆结束后,仓库默认还是用系统或全局的core.symlinks=false设置,自然不会保留符号链接的创建规则。Windows符号链接的权限门槛
在Windows上创建符号链接默认需要管理员权限(除非你开启了「开发者模式」,或者通过本地安全策略给当前用户分配了创建符号链接的权限)。如果克隆时你没有以管理员身份运行终端,哪怕临时设置了core.symlinks=true,Git也会因为权限不足,自动 fallback 到复制文件而非创建符号链接,同时不会在本地配置中保留这个临时设置。子模块的独立配置逻辑
你用了--recurse-submodules参数,子模块的克隆过程是独立于父仓库的。父仓库的临时-c配置不会传递给子模块的克隆会话,所以子模块里的符号链接同样不会被正确创建。
而你后续执行git config core.symlinks true + git reset --hard能生效的原因很简单:
git config把配置写入了本地仓库的.git/config,让这个设置永久生效;git reset --hard会重新检出所有文件,这时候Git会读取本地配置的core.symlinks=true,同时如果此时你的终端有足够权限,就能顺利创建所有符号链接。
如果你想一步到位解决这个问题,可以试试两个办法:
- 克隆前先开启终端的管理员权限,同时克隆时加上
-c core.symlinks=true,并且克隆完成后手动把配置写入本地仓库:git clone -c core.symlinks=true --recurse-submodules -b develop git@example.com/my-project.git cd my-project git config core.symlinks true - 提前在全局Git配置里开启符号链接支持(这样所有仓库都会默认生效):
记得也要确保终端有管理员权限或者开启了Windows开发者模式。git config --global core.symlinks true
内容的提问来源于stack exchange,提问作者WavyRancheros
相关产品推荐
相关产品推荐

