在我们的一个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)的一个问题。
非常感谢任何帮助/提示!
答案 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