【问题标题】:is git submodules what I need?git子模块是我需要的吗?
【发布时间】:2013-08-26 04:28:45
【问题描述】:

我有两个网站的两个存储库,但是这两个网站共享相同的框架。

我想为框架本身创建一个专用存储库,但我不确定它会如何工作。

我目前做的是在 website1 中开发框架,然后每次添加新功能时将其复制到 website2。如您所见,它不是很有效...

我想要一个单独的框架存储库,但我仍然需要它位于两个网站之一中,以便我可以继续处理它。 最重要的是我需要能够以简单的方式将其部署到其他网站

对我来说最好的解决方案是什么?如何实现?

PS:在过去的几个月里,我一直在密集使用 SourceTree 和 Bitbucket,因此我对 git 相当熟悉,但我从未使用过命令行。

【问题讨论】:

    标签: git repository git-submodules git-subtree atlassian-sourcetree


    【解决方案1】:

    只要您的框架仅限于您网站的子目录,那么可以,您可以将您的框架视为您网站存储库的子模块,它充当“父”存储库。

    SourceTree 支持子模块(自 1.3 起),如果您的框架在其自己的存储库中进行管理,您可以将其添加到您的网站存储库中。
    见“Using submodules and subrepositories

    【讨论】:

    • +1 感谢您的回答和链接!是的,我的框架仅限于一个子目录。但是我仍然不确定如何将我的框架包含在我的 website2 存储库中?我想我可以使用git clone(然后git pull 进行更新?)但是从哪个URL/路径?我需要能够离线工作。 this 是我需要的吗?谢谢!
    • @usernotfound 无需克隆:只需输入 url 和路径(即 web repo 中的目录)。 SourceTree 将在您的父仓库中为您克隆子模块仓库。
    • 我的意思是,我如何在另一个项目中重用我的框架?我不需要克隆它?
    • @usernotfound 否,将其作为子模块添加到其他项目中。它将被克隆。如果您想更新web2 中的相同子模块,以考虑在web1 中所做的修改,只需在web2/frameworkcd ..git addgit commit 内完成git pull(记录新的SHA1框架 repo 子模块)。
    【解决方案2】:

    由于您没有提到您正在使用什么语言和框架,在一般用例中,为您的框架创建一个 git 存储库并用作两个项目的子模块是可取的。

    通过“复制粘贴”节省时间,并使您的框架的提交远离特定于站点的提交,因此您的提交日志将更清晰,并且可以允许其他人为您的框架做出贡献,并可能允许开源您的框架。

    【讨论】:

    • 感谢您的回答。这是一个网站,它主要包含 PHP、JS 和 CSS 文件。我的框架是一组自定义的工具、助手和类,我在项目之间重复使用它们。请问为什么语言很重要?
    • 对于像ruby这样的特定语言,您可以使用rubygems等可用的外部库包管理来模块化您的框架并将其包含到您的项目中,而不是使用子模块。
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2023-04-03
    • 1970-01-01
    • 2010-10-15
    • 2017-10-24
    • 1970-01-01
    • 2017-03-10
    • 2015-10-25
    相关资源
    最近更新 更多