推动拆分子树存储库策略

时间:2014-04-11 20:02:41

标签: git github git-subtree

我终于想出了如何使用Git从我的主存储库中创建一个子树存储库。

还有一件事我不太确定。假设“Main”是包含我所有代码的存储库,“Shared”是我从“Main”分割的子文件夹。

当我对主仓库中的代码进行更改以及“共享”仓库中的更改时,我该如何处理?

如果我对“Main”代码和“共享”代码进行了更改,我可以先在“Main”代码上执行commit吗?

git commit -am "Made changes to main and shared"

我应该 总是 首先在“共享”回购中执行push吗?

git subtree push --prefix=path/to/code --squash shared master

之后只需按下“主要”回购:

git push

从现在开始,我是否应该一直这样提交和推送?或者这可能是错误的做法?

1 个答案:

答案 0 :(得分:1)

总是,因为您可能只希望在Main repo的上下文中保留一些子树修改,在这种情况下,简单的提交+推送Main repo就足够了(在这种情况下你不必回到子树上游仓库)。

这不同于子模块,其中需要提交子模块中的任何修改,然后你需要返回到父repo并再次提交(记录该子模块的新SHA1) 。
在那种情况下(子模块),是的,建议先推送子模块(到其上游仓库),然后再推送父仓库:任何克隆父仓库的人都希望从子模块上游仓库获得SHA1(如果你没有推动子模块...... SHA1不可用。)

在子树中,主回购包含所有内容,因此推送主回购就足够了 只有当您希望修改反映在上游回购中时,才会推送到子树的上游回购。

相关问题