如何同步经过修补或重新设置基础的GIT存储库?

如何同步经过修补或重新设置基础的GIT存储库?,git,github,rebase,Git,Github,Rebase,我分出的回购协议的所有者定期对其提交(和推送请求)进行重新调整和修补,而不仅仅是合并或添加它们。当我想与他的repo同步时,git/Github希望合并自补丁提交以来的所有内容,尽管只有这个补丁应该同步 好的,我想我必须说明我的问题。是的,把这些变化从上游拉到我的本地回购中是没有问题的,因为我也可以在这里重新设定基准。但是当我想在GitHub(源代码)上同步我的fork时,我也不知道如何在那里重新设置提交历史的基础。当我想要推送我的重定基址历史记录时,git告诉我必须首先从源代码中提取,因为基础

我分出的回购协议的所有者定期对其提交(和推送请求)进行重新调整和修补,而不仅仅是合并或添加它们。当我想与他的repo同步时,git/Github希望合并自补丁提交以来的所有内容,尽管只有这个补丁应该同步

好的,我想我必须说明我的问题。是的,把这些变化从上游拉到我的本地回购中是没有问题的,因为我也可以在这里重新设定基准。但是当我想在GitHub(源代码)上同步我的fork时,我也不知道如何在那里重新设置提交历史的基础。当我想要推送我的重定基址历史记录时,git告诉我必须首先从源代码中提取,因为基础已经改变(因为我重定了Github fork的本地副本的基址)


因此,问题更可能是,如何将我的Github fork与原始的重定基础回购同步?

您不能重定2个存储库的基础:您的重定基础存储库与上游存储库相比。您只能应用
合并


关于更新fork的参考资料:

如果所有者使用rebase och ammend重写了提交,我会说您必须使用cherry pick或交互式rebase

樱桃采摘

  • 签出要同步到的新分支
  • Cherry选择你自己的每一项承诺
  • 交互式重设基础

  • 启动一个交互式的重基
  • 将您不是作者的所有提交设置为跳过
  • 编辑、更新问题

    为了能够将您的本地分支机构推送到您自己的回购协议,您必须使用
    --force
    覆盖已更改的旧提交。像这样

    git push origin master:master --force
    

    在重新基址或修改后,更改的提交将完全不同(即使您不更改任何内容,提交时间也将更改,并由此获得一个全新的提交哈希)。因此,您需要“扔掉”github repo中的旧承诺。

    我更新了我的问题,更多关于我的github Fork更新答案,包括您的澄清