gpt4 book ai didi

git - 无法将文件添加到 Git 存储库

转载 作者:行者123 更新时间:2023-12-04 16:41:58 28 4
gpt4 key购买 nike

当我尝试将所有文​​件添加到 gitRepo 时,它说:

$ git add .
error: 'ConnectorApp/' does not have a commit checked out
fatal: adding files failed

当我尝试删除空文件夹时,它说:
$ git rm ConnectorApp/
fatal: pathspec 'ConnectorApp/' did not match any files

是否有其他解决方案可以清除此空文件夹以将文件添加到我的 gitRepo?

最佳答案

它不是一个空文件夹。它是一个子模块。

空文件夹是无关紧要的,因为 Git 只存储文件,而不是文件夹。文件的路径名可能类似于 dir/file.ext .那不是文件夹 dir包含file.ext ,而是一个名为 dir/file.ext 的文件.如果您的操作系统坚持将此类文件存储为名为 dir 的文件夹包含一个名为 file.ext 的文件当你需要处理/使用它时,好吧,没关系:Git 将创建一个新的空 dir文件夹,并在其中写入一个名为 file.ext 的文件必要时,在git checkout期间例如。但是 Git 只是简单地存储了文件 dir/file.ext .它没有存储 dir .

但在这种情况下,如果您更仔细地查看 ConnectorApp/ ,包括寻找通常 stash 的文件和目录/文件夹,你会看到有一个 ConnectorApp/.git .换句话说,ConnectorApp/它本身就是它自己的 Git 存储库。 Git 存储库不能包含另一个 Git 存储库,1 因此,您的 Git 存储库将在此处将第二个 Git 存储库记录为 Git 在内部调用的 gitlink。

gitlink 背后的机制是你的 Git 可以在你自己的机器上调用第二个子 Git,进入子存储库——Git 称之为子模块——并询问它:这个存储库使用哪个提交?如果有答案,答案将是原始提交哈希 ID。

外部存储库——Git 称之为 super 项目——然后在每次提交中记录这个原始哈希 ID。运行 git add ConnectorAppgit add ConnectorApp/ 2 告诉你的 super 项目 Git 进入子模块足够长的时间来找出正确的哈希 ID 并存储/更新它,作为 gitlink 条目。

错误消息告诉你,子模块——另一个 Git——没有任何提交被 check out 。所以 super 项目 Git 调用子模块 Git 并询问它你检查了哪个提交?子模块 Git 说把____从这里拿走,我没有!

要解决此问题,您有多种选择:

  • 不要使用子模块。不要尝试添加 ConnectorApp/根本。让你的 super 项目是一个没有子模块的 Git,并列出 ConnectorApp/.gitignore在 super 项目中,以便它不会尝试添加它。

    此选项仅在 super 项目尚未列出时才有效 ConnectorApp作为子模块。
  • 自己进入子模块,然后选择一个提交。那是:
    cd ConnectorApp/
    git checkout <something>
    cd .. # return to superproject

    您为something填写的内容这里决定了当 super 项目 Git 询问子模块 Git 你检查出哪个提交哈希 ID 时, super 项目 Git 将看到哪个提交哈希 ID?

    这就是您的 super 项目提交如何记录要在子模块中使用的正确提交。
  • 如果你的 super 项目 Git 有一个现有的记录正确提交,你可以让 super 项目 Git 告诉子模块 Git 检查记录的提交:
    git submodule update --checkout

    (实际上 --checkout 是默认值,因此您通常可以省略它,但有一些配置项可以更改此设置)。

    请注意,这适用于 super 项目中列出的每个子模块。如果只有一个子模块,那没关系。

  • (请注意,您可能创建了不正确的子模块,其中 super 项目有一个 gitlink 而没有所需的其余信息。这里可能不是这种情况,但有时确实会发生。如果发生了,请搜索 StackOverflow 以获取有关答案。 )

    1一个存储库不能包含另一个批发存储库没有技术原因,但出于管理原因不这样做,因此 Git 被编程为不这样做。

    2旧日不景气, git add ConnectorApp/将继续将子模块中的所有文件添加到 super 项目中。此行为现​​在已修复,这使得子模块比以前更容易使用。但是,如果您有一个旧的 Git,请小心:不要让尾部的斜杠出现在那里!我在这里仍然有一些来自 Git 1.5 或 1.6 天的烧伤疤痕。

    关于git - 无法将文件添加到 Git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58959998/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com