本地提交git子模块

时间:2012-07-12 11:04:21

标签: git git-submodules

我有一个git项目,其中包含我从公共只读存储库克隆的git子模块(即我无法推送到该存储库)。是否有可能承诺该子模块?这是我尝试这样做的方式

[main]$ cd sub
[sub]$ git checkout master
[sub]$ echo test > new-file
[sub]$ git add new-file
[sub]$ git commit -m 'added a new file'
[sub]$ cd ..
[main]$ git add sub
[main]$ git push origin

到目前为止一切顺利。现在的问题是,当我去另一台计算机并执行以下操作时:

[main]$ git pull
[main]$ git submodule update

但是fatal: reference is not a tree: af232...失败了。我认为这样可行,因为当我在main中执行git push origin时,它似乎也会推送子模块的所有对象(毕竟它们在main的.git目录中)。但显然,当第二台计算机拉动时,它不会收到这些新物体。

1 个答案:

答案 0 :(得分:1)

这是因为你已经推动了超级项目中的子模块更改,但是你还没有推动子模块中发生的实际更改(git push origin不推送子模块更改,只推送其提交SHA1。) 。这不是你可以做的事情,因为它是一个只读的回购。

您可以做的是将子模块的URL更改为您自己的存储库,将更改推送到它,然后提交并推送超级项目中的URL更改。