git - 在上游的子目录上使用 git,同时保持合并功能的完整
问题描述
有没有办法从上游项目的子目录创建一个新的 repo(或分支,也可以正常工作),同时保持合并功能的完整性?
示例:上游使用 monorepo 设置,具有特定的子目录用于project/xyz
. 我希望能够将该目录分离到一个单独的分支或存储库中,因此其内容project/xyz
将位于新分支或存储库的根目录中。我会在这里进行修改。但我还希望能够定期将上游提交的更改合并回我的分支或存储库,同时保持历史记录完好无损。
理想情况下,我也可以将我的更改推送回原始项目,但我也可以为此使用补丁文件。
我看过git subtree
,但据我了解,它的工作原理类似于子模块,其中项目的子目录指向不同的存储库。这不是我想要的(我必须修改上游项目,这是我做不到的,并为所有提交者提供对我的仓库的写访问权限)。
我也看过git filter-branch
,但它创建了新的提交哈希,因此破坏了再次从上游合并的能力。
有没有人有这方面的工作流程?只用git可以吗?谁能描述一个可以使这项工作的脚本?
解决方案
如果克隆项目的大小不是问题,您可能会摆脱所谓的“稀疏签出”:基本上,此功能允许您在本地克隆中拥有所有历史记录,但只签出选定的目录子集.
在这个 repo 中记录的提交仍然是“正常的”,因为它们将包括项目的完整状态。换句话说,你所谓的工作树——项目文件被检出的地方将保持对整个项目的有限视图。
推荐阅读
- python - 图像中两点之间的路径
- swift - Swift 中的 Realm 模型是什么?
- ios - 如何直接在 swift 类文件中创建表视图控制器场景的转场?
- python - 在 Python 中更新字典列表的最佳实践
- oracle - oracle中如何将不同的字符串格式转换为日期
- javascript - ReactJS:来自道具的onClick函数不适用于li元素
- reactjs - 从列表中选择第一个选项作为默认值
- python - PySpark 无法启动 - “python”:没有这样的文件或目录
- scala - 无法使用 take() 操作打印 RDD 内容
- python-3.x - 从弹性搜索中检索数组中的列