使用不同子模块设置的checkout提交无法正常工作

d4R*_*4Rk 2 git git-submodules

在我们的一个git repo中,在某个时刻添加了一个子模块.现在,每当我检查git repo的状态时,子模块还没有存在,它就没有正确地"移除"子模块.它似乎处于一种状态,子模块在那里一半,一半不在.

我还注意到,在该子模块不再预设.gitmodules,但其在文件夹中path/to/submodule,并.git/modules仍然存在.

我至少试过以下几件事:

git status =>未跟踪的文件:path/to/submodule

git reset --hard =>不变

git submodule foreach reset --hard =>不变

git clean -d -f => Skipping repository path/to/submodule

git submodule update --init =>不变

但直到现在我还没有解决它.当然我可以手动删除这些文件夹,但我希望它在我切换提交时自动工作,因为这也是我们的CI(Jenkins)上的一个问题.

任何帮助/提示都非常感谢!

161*_*903 10

您需要git clean使用双-f参数运行.从文档(强调我的):

-f --force

如果Git配置变量clean.requireForce未设置为false,则git clean将拒绝删除文件或目录,除非给定-f,-n或-i.除非给出第二个-f,否则Git将拒绝使用.git子目录或文件删除目录.这也影响git子模块,其中.git/modules /下移除的子模块的存储区域在-f被给出两次之前不会被移除.

所以正确的命令是: git clean -d -f -f

  • 这么多,我从来没有听说过什么,你必须给两个选项参数!但学习永远不会停止:-) (4认同)