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

如何转义Git子模块名称中的`--`并删除误添加的子模块?

如何删除名称含--的Git子模块(未执行init的情况)

这种带--前缀的子模块名确实会给Git命令添乱,我之前也踩过类似的坑,别担心,用下面的方法就能搞定:

方法一:用--分隔命令选项与路径(最快捷)

Git(和很多命令行工具)都支持用--来明确区分命令选项和后续的路径参数,它会告诉Git:“后面的内容都是路径,别把它们当成命令选项解析”。

你只需要执行这条命令即可:

git rm -rf -- zshrc/zsh_prompts/--depth=1
  • -r是因为子模块是目录,需要递归删除;
  • -f强制删除,避免出现文件状态的提示;
  • --后面紧跟你的子模块实际路径(从你的输出看是zshrc/zsh_prompts/--depth=1)。

执行完这条命令后,错误的子模块就会被彻底移除,同时.gitmodules文件里的对应条目也会被自动删除。

方法二:手动修改配置文件(适合更复杂的情况)

如果方法一因为某些原因不生效,你也可以手动清理相关配置:

  1. 删除.gitmodules中的错误条目
    打开项目根目录下的.gitmodules文件,找到类似这样的条目:

    [submodule "zshrc/zsh_prompts/--depth=1"]
        path = zshrc/zsh_prompts/--depth=1
        url = https://github.com/spaceship-prompt/spaceship-prompt.git
    

    删除这段内容,保存文件。

  2. 清理本地子模块缓存(如果存在)
    检查.git/modules目录下是否有对应的子模块缓存目录,如果有就手动删除:

    rm -rf .git/modules/zshrc/zsh_prompts/--depth=1
    
  3. 更新Git索引
    最后把修改后的.gitmodules文件加入索引,并移除错误子模块的缓存记录:

    git add .gitmodules
    git rm --cached zshrc/zsh_prompts/--depth=1
    

小提示:避免再次踩坑

以后添加子模块时,要注意参数的顺序:--depth=1这类配置参数应该放在仓库URL之前,正确的命令格式是:

git submodule add --depth=1 https://github.com/spaceship-prompt/spaceship-prompt.git [指定路径(可选)]

如果不指定路径,Git会默认用仓库名(spaceship-prompt)作为子模块的本地路径,就不会出现这种参数被当成路径的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:04:06