致命:在未填充的子模块中

zdwk9cvp  于 2022-10-24  发布在  Angular
关注(0)|答案(6)|浏览(181)

我是GitHub的新手,我正在努力为我目前遇到的一个问题找到解决方案。我会一步一步地走完我的程序:
首先,我创建了一个名为[project name]的新文件夹,接下来,我使用了以下命令:

cd [project name]
    git clone [remote project from github url]

到目前为止,我已经创建了一个文件夹,并克隆了我的团队正在GitHub中处理的一个项目。
接下来,我进入该文件夹并创建了一个Angular 项目

ng new [angulartest]

这将在同一文件夹中创建Angular 测试的所有组件,该文件夹是来自GitHub的组件的克隆。
最后,我在GitHub上推送了新的Angular 测试

git add [angulartest]
    git commit
    git push

实际情况是,它只推送文件夹[angulartest],但不推送其中的任何内容(即使其中有内容)。当我试图从它的内容中拉出时,我仍然得到一个空文件夹作为回报。
当我尝试进入该文件夹并使用以下步骤添加内容的每个元素时:

cd [angulartest]
    git add e2e, src, nodemodules, etc
    git commit
    git push

它给出以下错误(即使我尝试单独添加每个元素):
fatal: in unpopulated submodule [angulartest]
我想知道是不是我的Git语法有问题,Angular 项目有问题,还是我试图克隆项目的方式有问题。这样,当我寻找解决方案时,我知道我想要朝哪个方向前进。

sq1bmfud

sq1bmfud1#

看起来,您可能已经删除了.git文件夹。如果是那样的话,你可以试试

git rm --cached angulartest -f
flmtquvp

flmtquvp2#

git rm --cached . -rf

anlijudavid's comment窃取,这是我在MacOS上用zsh得到的实际答案。根据Richard Collette的评论将-r添加到此答案中。

xyhw6mcr

xyhw6mcr3#

在我的例子中,这个错误的根本原因是我有一个子目录,里面有它自己的.git文件夹。当我发出git add --all命令时,我收到了同样的错误
以下是我如何解决这个问题的
1.删除导致错误的子目录内的所有.git文件夹
1.cd到主目录
1.git rm --cached sub_directory_name -f
1.git add --all递归添加子目录和内容
1.git status验证物品是否已添加
这个错误几乎让我头疼,但感谢前面的答案,这些答案的组合对我很有效。

vshtjzan

vshtjzan4#

以下是我所做的
1.在存储库外的某个位置(例如,您的桌面)复制‘子模块’目录
1.从您的存储库中删除子模块目录
1.提交回购
1.进入对子模块目录的复制,删除.gitignore文件和.git目录
1.将子模块目录复制回您的repo并提交
这意味着我丢失了子模块的提交历史记录,但至少它修复了子模块中我的文件不会转到GIT的问题!

0lvr5msh

0lvr5msh5#

如果我们从第三方存储库中克隆,我们会收到这个“致命的:在未填充的子模块‘子模块名称’中”的错误。
使用以下命令修复此错误:

git rm --cached <submodule name> -f

您也可以手动删除*.git*文件夹,然后尝试git添加

c0vxltue

c0vxltue6#

当我在我的本地repo中有一个子目录,删除了.git以解决不同的问题,然后尝试将更新的html文件添加到我的repo中时,我得到了相同的错误。我去了GitHub,并使用他们的图形用户界面上传了文件。现在我可以看到所有的匹配和GIT状态都显示没有问题。

相关问题