问题原因
git 版本1.7.0 及以后版本,如果子模块有任何修改过的文件或未跟踪的文件,那么它们现在被认为是 dirty 的,而在以前,只有当子模块中的 HEAD 指向错误的提交时才会这样。
解决方法
Git diff says subproject is dirty
方法1:撤销对子模块的修改
git submodule foreach --recursive git checkout .
撤销不了?有可能是因为权限发生了改变,而git 无法操作权限问题。
方法2:删除子模块目录重新拉取代码
rm -r {submoudle_path}
git submodule update --init --recursive
方法3:取消跟踪子模块的修改
git status --ignore-submodules=dirty
需要 git 版本大于 1.7.2