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

时间:2017-11-21 00:26:37

标签: angularjs git github

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

首先创建一个名为[项目名称]的新文件夹 接下来我使用了这些命令:

    cd [project name]

    git clone [remote project from github url]

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

接下来,我进入该文件夹并使用

创建了一个角度项目
    ng new [angulartest]

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

最后,我用

在github上推动了新的角度测试
    git add [angulartest]
    git commit
    git push

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

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

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

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

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

6 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:16)

git rm --cached . -rf

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

答案 2 :(得分:9)

在我的情况下,此错误的根本原因是我有一个带有自己的.git文件夹的子目录。当我发出git add --all命令时,我遇到了同样的错误

这是我解决问题的方式

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

我几乎对这个错误感到头疼,但是感谢以前的回答,为我提供了很多帮助。

答案 3 :(得分:4)

这就是我所做的

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

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

答案 4 :(得分:4)

如果从第三方存储库克隆,则会出现“致命:在未填充的子模块'submodule name'中的错误”。

使用此错误修复程序

git rm --cached <submodule name> -f

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

答案 5 :(得分:0)

当我在本地存储库中有一个子目录时,我遇到了同样的错误,删除了 .git 以解决不同的问题,然后尝试将更新的 html 文件添加到我的存储库中。 我去了 github 并使用他们的 GUI 上传了文件。现在我可以看到所有匹配项和 git status 显示没有问题。