如何同步修补或重新定位的GIT存储库?

时间:2016-11-21 13:00:19

标签: git github rebase

我分叉的仓库的所有者会定期修改并修补他的提交(和推送请求),而不仅仅是合并或添加它们。当我想与他的repo同步时,git / Github希望在修补提交后合并所有内容,尽管只应该同步这个补丁。

好的我想我必须说明我的问题。是的,将上游的更改提取到我的本地仓库是没有问题的,因为我也可以在这里进行改装。但是当我想在GitHub(origin)上同步我的fork时,我也不知道如何在那里重新设置提交历史记录。当我想要推销我的历史时,git告诉我,我必须首先从原点撤出,因为基础已经改变(因为我重新设置了我的Github分叉的本地副本)。

所以问题更有可能,如何将我的Github分支与原始的重新定位的回购同步?

2 个答案:

答案 0 :(得分:1)

您无法修改2个存储库:您的分叉存储库上游存储库。您只需申请merge

有关更新分叉的参考:https://help.github.com/articles/syncing-a-fork/

答案 1 :(得分:1)

如果所有者使用rebase och ammend重写了提交,我会说你必须使用cherry-pick或interactive rebase。

Cherry pick

  1. 签出要同步到的新分支
  2. Cherry挑选您自己的每个提交
  3. 互动基础

    1. 启动交互式rebase
    2. 设置您不是作者要跳过的所有提交
    3. 修改,更新问题

      为了能够将本地分支推送到您自己的仓库,您必须使用--force来覆盖已更改的旧提交。像这样

      git push origin master:master --force
      

      在rebase或修改之后,更改的提交将完全不同(即使您不更改任何内容,提交时间也会更改,并且您将获得全新的提交哈希)。因此,你需要扔掉"你在github repo中的旧提交。