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

使用git -C指定目录执行clone --mirror报非git仓库的解决方法

报错根因

git -C <目标目录> 的执行逻辑是:首先将工作目录切换到你指定的<目标目录>,再运行后面跟着的git子命令,子命令里传入的所有相对路径,都是以切换后的目标目录为起点解析,和你执行命令时所在的原始目录无关。
你在主目录运行git -C dir1 clone --mirror repo1.git时,git进入dir1目录后会去找dir1/repo1.git这个路径,但你创建的裸仓库实际存放在主目录下,dir1里根本没有这个仓库,自然会抛出找不到Git仓库的报错。
之前你手动cd进入dir1后执行git clone --mirror ../repo1.git能正常运行,本质是因为在dir1目录下,../repo1.git正好指向主目录里的裸仓库,路径匹配所以执行成功。

正确执行方式

两种方案都可以实现目标效果,按需选择即可:

  • 方案1:匹配相对路径解析规则,传入git切换到dir1后能正确定位到裸仓库的相对路径
    直接在主目录执行以下命令即可:
    cd ~
    git -C dir1 clone --mirror ../repo1.git
    
  • 方案2:使用绝对路径指定裸仓库位置,彻底避免相对路径的解析歧义,不会因为工作目录切换出错
    直接在主目录执行以下命令即可:
    cd ~
    # 写法1:用~指代当前用户主目录,简洁通用
    git -C dir1 clone --mirror ~/repo1.git
    # 写法2:写全绝对路径,适配所有场景
    git -C dir1 clone --mirror /home/你的实际用户名/repo1.git
    
避坑提示

所有带-C参数的git命令,后续传入的仓库路径、文件路径都要以-C指定的目录作为相对路径起点计算,不要按照你敲命令时所在的当前目录算路径,就能避免绝大多数这类路径不匹配的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:30:53