开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

Git 子树合并指南

我一直在研究将第三方存储库和库合并到我的Git项目中的方法。Subversion的svn:externals功能是该特定VCS的一项引人注目的功能,其他VCS系统(尤其是DVCS系统)很少(如果有的话)具有真正可行的等效功能。Gitsubmodules并不可怕,但它们假定您需要整个存储库—而SVN允许您根据需要挑选子目录。

为什么我可能只想链接一个子目录?考虑具有这种结构的项目:

docs/
    api/
    manual/
        html/
        module_specs/
library/
    Foo/
        ComponentA/
        ComponentB/
tests/
    Foo/
        ComponentA/
        ComponentB/

在另一个项目中,我想使用ComponentB。使用svn:externals,这很容易:

library/Foo/ComponentB http://repohost/svn/trunk/library/Foo/ComponentB

现在目录已添加和跟踪。

有了Git,情况就不同了。我发现的一种解决方案是使用git-subtree,它是Git的扩展。与svn:externals相比,它的设置需要更多的努力,但它提供了轻松冻结特定提交并将所有更改压缩为单个提交的好处。

JonWhitcraft最近有一些关于如何使用它的问题,我通过电子邮件回答了他。显然我给他的东西对他有用,因为他随后请求他是否可以发布我的指南——您可以在此处找到。

未经允许不得转载:我爱分享网 » Git 子树合并指南

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏