【发布时间】:2014-07-18 08:39:49
【问题描述】:
简而言之,我想将另一个项目(不在我的控制之下)的子目录“分叉”到新存储库的顶层,并对该子目录中的代码进行增强,同时保留合并来自上游项目中的子目录。
我已经阅读该主题已有一段时间了,但找不到适合我情况的确切答案。 git subtree 的大部分用法可以分为以下几种情况:
- 项目的一个子目录被分拆为它自己的独立项目。父项目将完全删除子目录,新项目将过上自己的生活。
- 父项目的维护者希望允许按照自己的条件维护子目录并将其拆分到自己的存储库中,该存储库使用
git subtree add添加回主项目
这些用例不适用于我:我不是一劳永逸的,而且我不拥有这个分叉的两边,所以git subtree add 流程不适用。
假设原始模块位于主项目的contrib/foo 中。我目前的想法是:
- 使用
git subtree split -P contrib/foo -b upstream_vx.y创建一个新的历史记录,将子目录“提升”到存储库的顶层 - 从我的项目中创建一个
master分支,并从这一点进行增强 - 通过偶尔运行
git subtree split来不断更新upstream_vx.y - 当我需要来自上游的错误修复或其他问题时,将
upstream_vx.y合并到我的master
这对我来说并不像“git”。具体来说,我基本上是在创建上游项目子目录的并行历史记录,并为每个主要上游分支维护我自己的“提升”分支(更不用说能够引用上游标签)。
有没有更好的方法来解决这个问题?
【问题讨论】:
标签: git version-control open-source git-subtree