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

时间:2015-10-01 07:38:57

标签: 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)的一个问题。

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

1 个答案:

答案 0 :(得分:9)

您需要使用双git clean个参数运行-f。来自documentation(强调我的):

  

-f   --force

     

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

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