最佳答案
我有两个或更多的项目(让我们叫他们 喷火计划和 项目栏)有一些 共同代码,我把一个 子舱。
我的理解是,如果我从 喷火计划内部提交对子模块的更改,那么它将是一个独立的头部,只有所有的 喷火计划克隆都能看到:
(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
也会做同样的事情,但是它看起来更加丑陋。
如何有一个共同的代码共享的项目,更新 从内部这些项目使用它?换句话说,提交到这个子模块应该更新所有使用这个子模块的存储库(存储库,而不仅仅是克隆)。
——编辑——
很明显,我的签出存储库被打乱和破坏。它从一开始就应该像这样工作(在本例中的 喷火计划上) :
(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."
然后从其他项目中获得变化,比如 项目栏:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git pull
将更新到最新的通用代码。如果分离的头部可能需要 git checkout master
。