Git 部分 fork ,同步 pull/merge

标签 git github git-merge git-pull

我想将一个使用接口(interface) X 的 Git 存储库 A fork 到我自己的使用接口(interface) 工作的存储库 B Y.

为此,我将删除与 X 相关的文件并创建我自己的与 Y 相关的文件,但是我希望能够从存储库中提取对核心的更改A,在我的存储库 B 中,没有 pull 入 X 相关文件(我已经删除了)并且我希望能够提交我对核心所做的更改(即 pull 请求),没有 pull ,从 A 中删除 X 文件或添加 Y 文件到A

通过浏览本网站上的类似问题,我发现了诸如 rebase 和选择性 merge 之类的东西,我不确定这是否真的是我想要的。

我主要关心的是跟踪谁做了什么更改,但如果可能的话,我也想保持项目之间的关系。

附言这两个项目都在 github 上,如果它提供任何额外的选项的话

最佳答案

在您描述的情况下,您无法在 AB 之间进行 merge 。您可以创建一个中间分支 A':

  • A merge 到 A' 以获得上游更改。
  • 将共享更改提交给 A'
  • A' merge 到 B 以将这些更改应用到您的 Y 特定代码。
  • Y特定的更改提交给B
  • 永远不要将 B merge 到 A'
  • 如果您在 B 中有更改要与 A 共享,请将它们挑选到 A' 中。
  • 请求从 A' pull 到 A 以在上游共享您的更改。

其他可能的解决方案包括在 AB 中同时支持 XY,或者拆分 >XY 支持到单独的存储库。

关于Git 部分 fork ,同步 pull/merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621305/

相关文章:

git - 如何通过 CLI 向 Bitbucket 提交 pull 请求?

git - 在Visual Studio中 merge 后发生冲突时,某些文件已被删除

git - 哪个 shell 用于 git '!' 别名?

github 问题跟踪器

git - Jenkins 创建一个工作来构建许多 repo

api - Github api 错误 redirect_uri_mismatch

android - 为什么我在 Google Play 商店找不到官方的 Github 移动应用?

git merge squash - 当我想要的只是我压扁的分支的更改时冲突解决

git - 如何撤销有冲突的 git merge

Git 提交触及子树/子文件夹