如何配置让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
相关产品推荐
相关产品推荐

