【问题标题】:git submodule init does absolutely nothinggit submodule init 什么都不做
【发布时间】:2017-02-07 12:08:09
【问题描述】:

我对“git submodule init”有一个奇怪的问题

当我使用“git submodule add url location”添加子模块时,它克隆了存储库,一切正常。

当我将所有更改推送回父存储库,添加 .gitmodules 文件等并将存储库克隆回来时,我尝试使用“git submodule init”初始化所有子模块

什么也没有发生 :( 字面上什么都没有,没有输出,没有额外的文件,它甚至没有尝试做任何事情。

所以我想知道,我做错了什么?

.gitmodules:

bash$ cat .gitmodules
[submodule "projects/subprojectA"]
    path = projects/subprojectA
    url = ssh://user@bitbucket.company.com/test/projectA.git

[submodule "projects/subprojectB"]
    path = projects/subprojectB
    url = ssh://user@bitbucket.company.com/test/projectB.git

【问题讨论】:

    标签: git git-submodules


    【解决方案1】:

    在googletest 子模块的情况下,以下对我有用:

    git submodule add --force https://github.com/google/googletest.git googletest
    

    因此,您需要手动添加子模块(注意 --force 标志)。

    【讨论】:

    • 另外,您需要删除 dest 文件夹。至少这对我有用。
    【解决方案2】:

    好的,我知道我做错了什么。

    当我添加 git 子模块时,我做了一个 git status,它告诉我三件事发生了变化

    .gitmodules
    projects/subprojectA
    projects/subprojectB
    

    当我将所有更改推送到存储库时,我不想提交子模块,因为我认为它会添加我刚刚克隆的所有文件,所以我只是做了一个 git add .gitmodules 并提交并推送了它。

    但这是错误的,你需要执行 git commit 并提交它告诉你的所有内容,然后当你这样做时,git 会注册这些路径,当你克隆时,它会起作用。

    但如果你不提交这些文件夹,它不会注册它们,也不会在你克隆父存储库时克隆它们。

    所以这是我的错误,我误解了添加这些目录会将所有子模块代码添加到父存储库,我试图回避它并停止工作。

    所以只需添加您的子模块并提交结果,一切都会很好:D

    无论如何,感谢保护者的帮助!

    【讨论】:

    • 谢谢!!!你救了我的命!!!抱歉,我很高兴我需要感谢你,我已经调试了好几个小时了!
    • 完全同意!你不知道这让我发疯了多少,哈哈
    • 谢谢。我在 GitLab 中使用子模块,他们的文档根本没有提到这一点
    • 谢谢!有谁知道为什么 git subodule 这样做?在.gitmodules、.git/modules之间,需要像这样提交它们,模块注册似乎很多余。
    • 因此,如果发生这种情况,则缺少指向子模块提交 ID 的文件。最简单的修复方法是重新添加子模块。
    【解决方案3】:

    克隆时使用--recursive 选项。此选项初始化所有列出的子模块:

    git clone --recursive
    

    在另一种情况下,如果你想初始化你刚刚克隆的 git 的子模块,你可以使用

    git submodule update --init --recursive
    

    【讨论】:

    • git submodule update --init --recursive 这里什么都不做,不克隆,什么都不做,我现在要试试 git clone --recursive
    • git clone --recursive 也不克隆子模块,我使用的是 git 版本 2.10.0
    • 是的,我评论中的那个,是我克隆存储库时拥有的那个,这就是为什么我有点困惑......
    猜你喜欢
    • 2017-11-06
    • 2023-03-30
    • 2011-04-04
    • 2018-01-31
    • 2022-12-08
    • 2019-08-16
    • 2021-06-20
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多