致命的:在无人居住的子模块中

Jun*_*ang 16 git github angularjs

我对github很新,我正在努力找到解决当前问题的方法.我将逐步完成我的流程:

首先创建了一个名为[project name]的新文件夹,然后我使用了这些命令:

    cd [project name]

    git clone [remote project from github url]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经创建了一个文件夹并克隆了我的小组正在github上工作的项目.

接下来,我进入该文件夹并创建了一个角度项目

    ng new [angulartest]
Run Code Online (Sandbox Code Playgroud)

这将把我的角度测试的所有组件创建到同一个文件夹中,该文件夹是来自github的克隆.

最后,我用github推动了新的角度测试

    git add [angulartest]
    git commit
    git push
Run Code Online (Sandbox Code Playgroud)

会发生的是它只推送文件夹[angulartest]但没有推送其内容(即使其中有内容).当我尝试从其内容中提取时,我仍然只得到一个空文件夹作为回报.

当我尝试输入该文件夹并添加内容的每个元素时,使用以下步骤:

    cd [angulartest]
    git add e2e, src, nodemodules, etc
    git commit
    git push
Run Code Online (Sandbox Code Playgroud)

它给了我错误:致命:在无人居住的子模块[angulartest]即使我尝试单独添加每个元素.

我想知道我的git语法,角度项目或我尝试克隆项目的方式是否有问题.这样,我知道在寻找解决方案时我想朝哪个方向前进.谢谢你,祝你有美好的一天!

Pet*_*ter 33

好像你删除了.git文件夹.在这种情况下,你可以尝试git rm --cached angulartest -f

  • 我尝试:`git rm --cached。-f`它的工作 (10认同)
  • 我不得不升级到舞台文件的几个级别。 (2认同)
  • 好吧,好吧,你知道什么......这为我解决了一切!非常感谢,“git”很棘手(但是非常有用!) (2认同)

enz*_*ito 29

git rm --cached . -rf
Run Code Online (Sandbox Code Playgroud)

窃取anlijudavid 的评论,这是我在 macOS 上使用 zsh 的实际答案。根据 Richard Collette 对此答案的评论添加 -r。


nad*_*nne 16

在我的例子中,这个错误的根本原因是我有一个子目录,.git里面有自己的文件夹。当我发出git add --all命令时,我遇到了同样的错误

这是我解决问题的方法

  1. 删除.git导致错误的子目录中的所有文件夹
  2. cd 到主目录
  3. git rm --cached sub_directory_name -f
  4. git add --all 递归地添加子目录和内容
  5. git status 验证是否添加了项目

我几乎对这个错误感到头疼,但感谢之前的答案,这些答案对我有用。


use*_*745 9

这就是我所做的

  1. 在存储库之外的某个地方(例如,您的桌面)制作“子模块”目录的副本
  2. 从您的仓库中删除子模块目录
  3. 提交回购
  4. 进入子模块目录的副本,删除.gitignore文件和.git目录
  5. 将子模块目录复制回您的仓库中并提交

这意味着我丢失了子模块的提交历史记录,但至少它解决了子模块中我的文件无法git的问题!


Mis*_*upa 8

如果我们从第三方存储库克隆,则会出现“致命:在未填充的子模块‘子模块名称’中”错误。

这个错误修复我使用

git rm --cached <submodule name> -f
Run Code Online (Sandbox Code Playgroud)

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