1

我知道这个问题已经被打死了。但是我仍然不清楚为什么我的子模块试图引用我的超级项目中的提交。我有一个项目,其中包含许多子模块,其中一些引用了我想要贡献的 github 存储库。更新模块后,我拉取模块的更改:

[ashinn@puppet1 puppet]$ cd 模块/神经节
[ashinn@puppet1 神经节]$ git 分支
*(无分支)
  掌握
[ashinn@puppet1 ganglia]$ git pull origin master
远程:计数对象:8,完成。
远程:压缩对象:100% (4/4),完成。
远程:总共 6 个(增量 4),重复使用 4 个(增量 2)
拆包对象:100% (6/6),完成。
来自 https://github.com/andyshinn/puppet-ganglia
 * 分支主 -> FETCH_HEAD
通过递归进行合并。
 自述文件 | 1+
 1 个文件已更改,1 个插入(+),0 个删除(-)

现在我想更新对超级项目中模块的引用:

[ashinn@puppet1 神经节]$ cd ../..
[ashinn@puppet1 puppet]$ git 添加模块/神经节
[ashinn@puppet1 puppet]$ git commit -m '更新的神经节模块'
[神经节 c172591] 更新神经节模块
 1 个文件更改,1 个插入(+),1 个删除(-)

我目前正在研究神经节分支,所以我将它推送到我的原点(这是 2 个不同的 URL):

[ashinn@puppet1 puppet]$ git push origin 神经节
计数对象:8,完成。
Delta 压缩最多使用 2 个线程。
压缩对象:100% (6/6),完成。
写入对象:100% (6/6),616 字节,完成。
总计 6 个(增量 4),重复使用 0 个(增量 0)
到 git@github.com:andyshinn/puppet.git
   1876698..c172591 神经节 -> 神经节
计数对象:5,完成。
Delta 压缩最多使用 2 个线程。
压缩对象:100% (3/3),完成。
写入对象:100% (3/3),323 字节,完成。
总计 3(增量 2),重复使用 0(增量 0)
远程:来自 /var/lib/puppet/repo
远程:dcd1fcc..c172591 神经节 -> 起源/神经节
远程:来自 https://github.com/andyshinn/puppet-ganglia
远程:a0c4e21..975c92f master -> origin/master
远程:致命:参考不是树:c5defdeae006c7b87058cc5c79aef60087b63a6b
远程:无法在子模块路径“模块/神经节”中签出“c5defdeae006c7b87058cc5c79aef60087b63a6b”
远程:更新现有环境神经节
到 puppet@puppet.mydomain.com:repo
   dcd1fcc..c172591 神经节 -> 神经节

遥控器有一个接收后脚本,用于签出不同文件夹中的分支并git submodule update --init为每个分支运行。如果我手动连接到原始存储库,我可以验证问题:

-bash-4.1$ git 拉
已经是最新的了。
-bash-4.1$ git 子模块更新 --init
致命:参考不是一棵树:c5defdeae006c7b87058cc5c79aef60087b63a6b
无法在子模块路径“modules/ganglia”中签出“c5defdeae006c7b87058cc5c79aef60087b63a6b”

我在这里做错了什么?

4

1 回答 1

0

拉动时您不在树枝上。HEAD 必须指向您想要的位置。更新子模块的正确方法是

git checkout master
git push origin master

现在当前提交指向您想要的位置。完成此操作后,您可以在超级项目中添加子模块更改,添加、提交和推送。

另一种选择是在子模块中创建当前 HEAD 所在位置的分支或标记并将其向上推:

git tag interesting HEAD
git push origin interesting
cd ../..
git add submodule/path
git commit -m "updated my submodule"
git push 
于 2012-09-27T23:28:33.637 回答