Git子树推送一棵新树

时间:2016-09-23 21:22:24

标签: git

我已经与git submodules合作了很长时间,我对它感到高兴。另一方面,我的同事一直在抱怨它(互联网上的很多人似乎也讨厌git submodule),我的主管决定改为git subtree

我(与我的主管一起)维护一个项目,其中包含submodulesgit subtree。每个子模块本身都是一个独立的项目,并且是为我们公司的不同项目开发的。我们的软件对这些模块有不同的依赖关系,为了帮助部署,我们创建了这个包含这4个子模块的项目。

现在我的主管创建了一个新的分支,在那里他摆脱了子模块并使用mod1添加了它们。这个前sobmodules之一的独立回购(让我们说 D--E--F dev_feature_X / A--B--C master )看起来像这样

独立回购

dev_feature_X

我的主管在mod1添加git subtree时使用了mod1

上周我不得不修复一个功能,我小心翼翼地单独提交。我想将$ git subtree push --prefix=mod1 user@server:mod1 feature_X 的更改推送到独立存储库,以便我执行

mod1

在独立的仓库git fetch上我创建了一个origin/feature_X,看到创建了一个新的分支 dev_feature_X | v D--E--F--P--Q--R feature_X / A--B--C master

origin/feature_X

这个新分支是树的一部分,所以我能够毫无问题地合并它。我删除了mod1分支,因为我不再需要它,它已经是树的一部分了。

今天我不得不再次对大型仓库进行一些更改,我再次小心地进行单独的提交。一旦我推动了我的更改,我想将$ git subtree push --prefix=mod1 user@server:mod1 feature_X 的更改推送到其独立的回购中。所以我又做了

mod1

在单独的仓库git fetch上我创建了subtree push,但现在 dev_feature_X | v D--E--F--P--Q--R A'--B'--C'--...--R'--O feature_X / A--B--C master 推了一个新的单独的树

git subtree push

这个新树的提交内容与原始树的提交相同。

我不明白为什么第一次YYYY-MM-DD只推动了#34;缺失的提交" (P,Q,R)但第二次它推动了一个镜像旧提交的全新树。现在历史已经过去,如果我将R与O合并,我会将O的每次更改都视为冲突。

我错过了什么或做错了吗?我已经阅读了手册页和一些教程,我想我已经理解了如何做到这一点,但似乎无论如何我都做错了。

0 个答案:

没有答案