Git - 如何删除子模块中未跟踪的文件夹

时间:2016-03-11 12:44:31

标签: git

我尝试结帐并使用git checkout命令丢弃此库,但似乎它对我不起作用。

我尝试删除此文件夹,但之后git要我将此已删除的文件夹添加到提交中,但我不想跟踪它或推送到服务器。

  

未提交的更改提交:(使用" git add ..."进行更新   什么将被承诺)(使用" git checkout - ..."丢弃   工作目录中的更改)(提交或丢弃未跟踪或   子模块中修改的内容)

     

已修改:Libraries / some_sdk(未跟踪内容)

2 个答案:

答案 0 :(得分:1)

一种方法是进入该子模块文件夹并在其中执行:

cd /path/to/repo
cd  Libraries/some_sdk
git reset --hard

这应该重置其索引。

然后,来自其父级仓库的git status应该再次提及(子模块)文件夹。

  

我不想跟踪它或推送到服务器。

不会从父级仓库跟踪:所述父级仓库仅引用代表子模块仓库的SHA1的gitlinkspecial entry in the index)。

  

我尝试删除此文件夹,但之后git要我将此已删除的文件夹添加到提交

要删除子模块,请参阅" How do I remove a submodule?"

cd /path/to/repo
git submodule deinit Libraries/some_sdk
git rm Libraries/some_sdk
# note: no trailing slash
rm -rf .git/modules/Libraries/some_sdk

答案 1 :(得分:0)

如果通过删除文件夹git想要"删除"变化。这是因为它已经被跟踪过了。您可以使用

删除它们

git rm -r [path to dir]

如果他们没有被跟踪

git clean -df可以解决问题(你可以使用-n标志代替-f进行干运行,告诉你哪些文件会被删除。