我在线有一个git存储库,我可以像往常一样使用它来跟踪我的程序。它通过我目录树的根目录中的常规过程完成了所有工作:
git add .
git commit
git push origin master
有一天,我发现树中的子目录已变为绿色(在git网站上),无法访问。现在我知道绿色是一个子模块(即使我不明白这是什么意思)但我希望它是一个真正的目录,我可以在那里查看和下载那些或检查修改。问题是,如何让这个目录再次恢复正常,其所有子目录和文件都在里面而不触及树内的其他目录?
谢谢
答案 0 :(得分:2)
这个想法是:
git submodule update --init --recursive
:请参阅“How can I init/update git submodules in a remote?”最后一个链接显示了如何取消引用子模块,如果需要,可以保留在所述子模块中完成的提交的历史记录(但将它们合并回主存储库)
现在,如果在尝试初始化子模块时,您收到消息:
No submodule mapping found in .gitmodules for path '...'
检查“Git - how to track untracked content?”的第二部分:“将其替换为普通内容”部分。
根本原因是当您尝试在主git仓库工作树中添加一个git repo的目录时:
目录“
nested repo
”最初是一个独立的Git存储库 通常这些子存储库被忽略,但如果你告诉git add显式添加它,那么它将创建一个gitlink条目,指向子存储库的HEAD提交,而不是添加目录的内容 。
如果git add拒绝创建这样的“半子模块”,那可能会很好。