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

如何配置让git commit -a不自动提交子模块变更?

解决git commit -a自动提交子模块变更的问题

嘿,这个场景我太熟悉了!确实Git在2.14.x版本调整了commit -a对子模块的处理逻辑——之前它不会自动捕获子模块的SHA变更,现在默认会把这些变更纳入提交范围,这就导致了你遇到的回滚问题。

给你几个实用的解决办法,按需选择:

  • 全局/仓库级禁用自动提交子模块
    如果你想彻底让commit -a忽略子模块变更,可以修改Git配置:

    # 仅当前仓库生效
    git config commit.autosubmodule false
    
    # 全局所有仓库生效
    git config --global commit.autosubmodule false
    

    这个配置会让Git默认不再把未手动添加的子模块SHA变更包含到commit -a里。

  • 手动指定提交文件,替代commit -a
    放弃使用commit -a,改为手动添加需要提交的文件后再提交:

    # 添加所有非子模块的变更文件(如果有不需要提交的记得提前ignore)
    git add .
    # 或者精准指定文件
    git add src/main.py docs/README.md
    # 然后提交
    git commit -m "你的提交信息"
    

    这种方式完全由你控制提交内容,从根源避免误提交子模块变更。

  • 单次提交临时忽略子模块
    如果只是偶尔需要跳过子模块变更,不用改配置,提交时加个参数就行:

    git commit -a --no-autosubmodule -m "你的提交信息"
    

    这个参数会临时覆盖默认配置,只在本次提交生效。

另外再提一句:团队协作时,建议rebase之后一定要执行git submodule update同步子模块版本,这样能从源头减少这类回滚问题的发生~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:09:18