【问题标题】:Git subtree that is dependent on the parent directory, or fork that only pushes some subfolders upstream依赖于父目录的 Git 子树,或仅将部分子文件夹推送到上游的 fork
【发布时间】:2017-05-29 09:10:42
【问题描述】:

我想在我的项目中创建一个我已开发的现有“框架”存储库,并在已创建的存储库中创建一个子文件夹来存储项目特定的文件(想想“引擎”和“游戏”)。我想保留在处理这个项目时在一个分支中对框架进行更改的能力,以免在合并分支时自动影响主分支,但我不想推送项目子文件夹(或任何其他与项目相关的子文件夹,如果我想添加任何)到 github 上的主框架 repo。我确实希望将所有子文件夹(包括任何特定于项目的子文件夹)推送到项目存储库,以保持一切都很好地打包。有没有办法在不强制框架进入子文件夹的情况下做到这一点?

【问题讨论】:

    标签: git github git-subtree


    【解决方案1】:

    分支机构,到处都是分支机构!

    在您的私有分支中处理您的子文件夹,我们将其命名为“私有”。从 master 分叉一个分支以在名为“my-frm”的框架上工作。将 my-frm 合并到 master(并使用它发出拉取请求)并将其合并到您的私有分支。

    【讨论】:

    • 非常感谢您的回答,但只是想看看我是否明白了... 1. 分叉“main”并克隆它...让我们将分叉称为“framework-game” 2. 在框架中-game,创建一个叫做game的分支和一个叫做framework的分支。 3. 当我对框架文件进行更改时,仅将它们提交到框架分支(在签出框架之前存储/提交任何并行的游戏更改)。 4. 将更改合并回游戏分支。 5. PR framework-game to "main" 做 PR 之前合并到 master 是不是一个好主意?愚蠢的SO...降价在此评论中不起作用:/
    • 你在哪里合并取决于你。它仅取决于您需要更改的位置(在哪些分支中)。如果您在两个或三个分支中需要它们 - 合并 2 或 3 次是完全可以的。 PS。注释用于快速注释,因此它们故意仅支持非常有限的降价子集。
    • 多亏了你,我才学到了很多关于 Git 的知识。例如,我没有意识到您可以在同一个 repo 中拥有一个私有分支并将其推送到不同的远程,或者,不同的本地 repo 具有来自相同或不同来源的分支子集(这将允许游戏项目有几个相关的分支而不会过度拥挤主要的)
    • 这种方法结果并不理想;我经常对项目中的框架进行更改,以便可以就地测试它们,然后我必须通过存储、切换分支、应用存储和丢弃任何非框架更改、提交和然后以这种方式和那种方式合并(以掌握,项目等),或者我只是对项目进行所有提交并将它们挑选到框架上,但这容易出错并且会使历史混乱。出于这个原因,我正在考虑采用子模块,因为 Gitkraken 支持它们。有什么见解吗?
    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 2011-11-24
    • 2013-04-13
    • 2020-09-16
    • 2014-08-20
    • 2016-07-03
    • 2020-03-04
    相关资源
    最近更新 更多