我有两个或多个项目(我们称它们为ProjectFoo和ProjectBar)有一些我放在submodule中的公共代码。
我的理解是,如果我从ProjectFoo中提交对子模块的更改,它将位于一个分离的头中,只有所有ProjectFoo克隆可以看到:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(56f21fb0...) $ git push
Everything up-to-date
那可能是因为master
分支没有改变。我可能会做类似的事情,git checkout master && git merge Everything up-to-date
但这看起来很丑陋。可能git reset --hard master
会做同样的事情,但看起来更丑陋。
如何让项目共享一个公共代码,从使用它的项目中更新?换句话说,提交到该子模块应该更新使用相同子模块的所有各种存储库(存储库,而不仅仅是克隆)。
- - 编辑 - -
显然,我签出的存储库被搞砸了。它应该从一开始就这样工作(在这个例子中的ProjectFoo上):
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(master) $ git push
....
fbfdd71..0acce63 master -> master
(master) $ cd ..
(master) $ git add ProjectFooBarCommoneSubmodule
(master) $ git commit -m "Submodule update."
然后从其他项目(例如ProjectBar )中获得更改:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git pull
将更新到最新的通用代码。git checkout master
如果它位于分离的头部,则可能需要A。