使用 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 如何从远程分支合并子树的主要内容,如果未能解决你的问题,请参考以下文章