我想将一个使用接口(interface) X 的 Git 存储库 A fork 到我自己的使用接口(interface) 工作的存储库 B Y.
为此,我将删除与 X 相关的文件并创建我自己的与 Y 相关的文件,但是我希望能够从存储库中提取对核心的更改A,在我的存储库 B 中,没有 pull 入 X 相关文件(我已经删除了)并且我希望能够提交我对核心所做的更改(即 pull 请求),没有 pull ,从 A 中删除 X 文件或添加 Y 文件到A。
通过浏览本网站上的类似问题,我发现了诸如 rebase 和选择性 merge 之类的东西,我不确定这是否真的是我想要的。
我主要关心的是跟踪谁做了什么更改,但如果可能的话,我也想保持项目之间的关系。
附言这两个项目都在 github 上,如果它提供任何额外的选项的话
最佳答案
在您描述的情况下,您无法在 A 和 B 之间进行 merge 。您可以创建一个中间分支 A':
- 将 A merge 到 A' 以获得上游更改。
- 将共享更改提交给 A'。
- 将 A' merge 到 B 以将这些更改应用到您的 Y 特定代码。
- 将Y特定的更改提交给B
- 永远不要将 B merge 到 A'。
- 如果您在 B 中有更改要与 A 共享,请将它们挑选到 A' 中。
- 请求从 A' pull 到 A 以在上游共享您的更改。
其他可能的解决方案包括在 A 和 B 中同时支持 X 和 Y,或者拆分 >X 和 Y 支持到单独的存储库。
关于Git 部分 fork ,同步 pull/merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621305/