合并先前贡献的上游变化

时间:2017-02-14 12:22:58

标签: git

鉴于我在一个团队中维持一个长期的回购分支,我想分歧但仍然在上游做出一些改变,我不知道如何应对这种情况:

  • 我提交了一个我后来想要上传的分支
  • 我PR上游回购
  • 我无法控制上游所有者的合并方式,他们选择在合并时重新定义我的更改
  • 我后来尝试使用来自上游(master - > master)的最新更改来更新我的fork,并且由于不同的哈希值,我之前贡献的提交在日志中重复。我不能像个人的分支一样改变。

1 个答案:

答案 0 :(得分:1)

你在这里没有好的选择。

事实是他们已将您的提交复制到新提交。现在有两份。如果您希望继续使用他们的存储库,您可以删除提交 - 即。,rebase并使用哈希更改 - 或者保留两者。因此,总共只有三个选项:

  1. 不要共享存储库(不要再提交他们的提交):遭受(无论何种程度)脱离。
  2. 遭受重复提交。
  3. 使用您自己的rebase来删除重复的提交。
  4. 就个人而言,我可能会选择2和3的组合:毕竟,选项2并没有那么多的痛苦,如果你与使用你的存储库的其他人协调,你可以将选项3的痛苦降到最低好。

    也就是说,您和其他任何人使用您的分支 - 您的存储库是松散的,而不是紧密地耦合到最终的上游存储库;让我们调用你的fork F 和上游fork U - 对于任何使用 F 的人来说,你都同意某些分支名称被重新命名 U 基于时间,提交次数或其他标准。你们都使用其他分支来完成工作,然后在发送之前将该工作复制到一个基于rebased-with- U 的分支(作为拉取请求或对于使用 U 的人来说。您还可以根据需要将您的工作复制到“最新的基于 U 的分支”,以便进行任何类型的进展。

    这样,你的fork F 在你的(复数,“你”是你自己的组)共享控制之下,半独立于 U ,但是某些部分 F 会在某种情况下与 U 重新同步。 (不同的部分可以有不同的时间表:对你来说最有意义。)你(组)选择重新同步的内容,时间和方式。