在一个公司项目中,我们使用了一段时间的子模块,但它一次又一次地引起问题。我们的决定是删除子模块,并将子模块的所有文件复制到子模块所在的文件夹中。(这是必需的,因为我们有一个旧的构建系统,需要该文件夹中的文件。
所以我做了一些改变:
cp -r build/sub ../sub
git rm -f build/sub
mv ../sub build/sub
rm build/sub/.git
字符串
这在我的机器上和构建系统上也可以工作。但是一个同事试图拉取更改并得到:The following untracked working tree files would be overwritten by merge
。在拉动之后,我们尝试git fetch --all && git reset --hard origin/master
,这并没有失败,但它也没有工作。我们不再有错误消息,但它未能删除build/sub文件夹,因为它不是空的,但git继续。它几乎复制了所有文件到build/sub文件夹中。所以.git文件仍然在build/sub文件夹中,但是subdmodule从.gitmodules文件中被删除了。
所以.
1条答案
按热度按时间up9lanfz1#
你想使用这个:https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt-deinit-f--force--all--ltpathgt82308203
手动删除部分工作目录/目录树是不够的,你必须告诉git这个子模块不应该再存在于仓库中,这样git就可以放弃这个子模块并删除它。
就像你添加一个仓库一样:你不复制和粘贴内容,你在git中配置一个子模块,然后让git更新仓库的内容。