0

可能以前有人问过这个问题,但很难说,因为子模块似乎会导致很多问题。这就是我正在做的事情。

# cd to parent repo
git submodule add git://example.com/myrepo
cd myrepo
# make some changes
git commit -am "made changes"
cd ..
git commit -am "modified submodule"
git clone --recursive . <path to cloned repo>

当我这样做时,我会收到错误

致命:参考不是树:96fa64c0dd64684f86d17841f7c515446885eb33

其次是

无法在子模块路径“myrepo”中签出“96fa64c0dd64684f86d17841f7c515446885eb33”

我在这里做错了什么?我只想添加一个子模块,然后对其进行一些更改,然后将整个父源代码树(包括子模块)克隆到一个新的 repo。

4

1 回答 1

0

你应该打电话

git submodule init

添加子模块后。 git submodule add克隆存储库并将条目添加到 .gitmodules。 git submodule init初始化子模块并将 .gitmodules 中的条目复制到 .git/config

编辑

我怀疑你错过了使用子模块的一些重要步骤。以下是我用来处理子模块的步骤。

如果适用,首先克隆父 repo

git clone git@github.com:test/test.git

切换到克隆目录并添加您的子模块

#change to the parent repo directory
cd test

#add the submodule to test/submodules/mysubmodule
git add submodule git@github.com/test/mysubmodule.git submodules/mysubmodule

初始化所有子模块并更新所有子模块,包括嵌套子模块

git submodule update --init --recursive

添加所有更改并提交并推送到遥控器(如果适用)

git add .
git commit

最后一部分非常重要,因为在您提交更改之前,repo 并不真正了解您的子模块。

于 2012-04-18T23:16:17.813 回答