使用 Git 如何从远程分支合并子树

Posted

技术标签:

【中文标题】使用 Git 如何从远程分支合并子树【英文标题】:Using Git how to merge a subtree from remote branch 【发布时间】:2009-11-19 05:21:21 【问题描述】:

Git 中的子树运行良好,尽管子树仍然支持一些 git 命令。

问题来了:

如何使子树从不同的远程分支中拉取,例如“稳定”或“集成”?


仅供参考,我们有一个 subtree "push" 作为脚本工作。事实上,它甚至可以将子树推送到我们在远程存储库上选择的特定分支。

有人知道如何在拉动时进行反向操作,甚至有线索吗?

简单的拉动是这样的:

git pull -s subtree remotebranch

一个可以尝试的想法:也许两步过程就可以解决问题。

    远程分支从远程存储库分支中提取,例如“stable”,然后 将git subtree pull 转至master

真诚地, 韦恩

【问题讨论】:

如果子树方法在您的情况下还不够,您可能需要考虑使用子模块来管理拉取和推送。 我很高兴你设法用这个subtree 脚本解决了这个推送问题。我将在 GitHub 上关注这个项目;) 【参考方案1】:

可能是(未经测试)git subtree script tool 可能会有所帮助。 见其man page

它可以在你自己的仓库中合并/拉取一个子项目,但它可能涉及所有分支,所以你仍然需要你的两步过程。

【讨论】:

谢谢。它可能会有所帮助。很明显,我们需要一种更加“整体”的方法来处理子树,以便它们像主树一样“自然地”工作。但这对 GIT 来说可能是低优先级,因为使用 GIT 的主要项目似乎从子树中只读。我们公司有一个私有和公共(开源)拆分项目,实际上形成了一个完整的整体。所以我们对子树进行了完整的双向工作。 哇。你提到的那个工具很棒!太好了,我帮助使它变得更好。 Avery 想出了如何让它拆分子树的提交,以便它只包含推送和拉取两个方向的相关历史记录。这意味着当提交中没有文件触及子树并且提交将仅包含子树中实际的文件时,它会忽略您的主要项目历史记录。与 Avery 合作,我添加了推送并改进了添加。 (他需要我调整几件事,然后他才能进入我希望下周做的官方。) 此外,它并不涉及所有分支,但对于子树添加来说有点神秘,并且没有子树推送。添加这些之后,它们现在允许您指定要从中提取或推送的远程存储库和 refspec。这很棒。我正在检查你的正确答案!

以上是关于使用 Git 如何从远程分支合并子树的主要内容,如果未能解决你的问题,请参考以下文章

Git 合并远程分支

gitlib还原合并请求后如何再次合并

git从入门到精通(合并分支,将更新提交到远程仓库,将本地分支与远程分支做关联)

为啥“合并后删除分支”只删除远程GIT分支而不是本地?

Git从青铜到王者第四篇:Git的分支与合并

路飞-day5——git 多分支开发git远程仓库ssh方式连接远程仓库协同开发冲突解决线上分支合并远程仓库回滚