如何清除Git子模块中未跟踪、未提交的变更?
清除Git子模块中的未跟踪及已修改内容
你看到的这些是Git子模块的状态变更,每个子模块都是独立的Git仓库,普通的git add/git clean命令无法直接处理,需要针对子模块单独操作:
方法1:逐个处理子模块
针对每个子模块进入目录执行命令,彻底放弃所有变更:
- 进入子模块目录:
cd TheresaPackage - 重置所有已修改文件到当前提交状态:
git reset --hard - 清除所有未跟踪的文件和目录:
git clean -fd - 返回主仓库:
cd .. - 重复上述步骤,依次处理
data-challenges、dotfiles、practice三个子模块
处理完成后,回到主仓库执行git status,就能看到子模块的状态恢复正常。
方法2:批量处理所有子模块
不想逐个操作的话,用Git子模块批量命令一次性搞定:
git submodule foreach --recursive git reset --hard git submodule foreach --recursive git clean -fd
这条命令会自动遍历所有子模块,依次执行重置和清除操作。
注意事项
git reset --hard会丢弃子模块中所有未提交的修改,执行前确认不需要保留这些内容git clean -fd里的-f是强制删除,-d是删除未跟踪的目录,确保彻底清理干净
内容的提问来源于stack exchange,提问作者Theresa_S
相关产品推荐
相关产品推荐

