重写master后,如何与上游同步GitHub分支的存储库?

时间:2018-07-12 09:12:26

标签: git github

我的功能分支中有一些分叉的存储库。我使用fetch/merge使它与上游保持最新。 在某个时候,上游所有者编辑了一个提交(C2),并重写了此后的整个历史记录(C2'-C3')。

----C1---C2'--...---C3'--C5---...---C6(upstream/master)
     \
      ---C2---...---C3(origin/master)
                     \
                      ---C4(origin/feature-branch)

如何立即同步我的叉子?我想以某种方式用C2'-C3'重写C2-C3,在C3'之上重新设置C4,然后将fork同步到C6。我想避免仅将C6合并到C3中。

已解决:

$ git fetch upstream
$ git reset --hard upstream/master --
$ git push origin +master
$ git checkout feature-branch
$ git reset --hard master --
$ git cherry-pick C4
$ git push origin +feature-branch

1 个答案:

答案 0 :(得分:1)

只要只有几次提交,就可以始终使用git cherry-pickhttps://git-scm.com/docs/git-cherry-pick)。

一种方法是克隆主分支,将主分支重置为上游/主分支,然后从克隆分支中挑选所需的提交。