首页 > 解决方案 > 来自 fork 的 Git 同步分支

问题描述

我了解如何同步一个分叉的 repo:设置我的 fork 的上游然后运行git fetch upstream && git checkout master && git merge upstream/master。我遇到的麻烦是从另一个人的叉子同步一个分支。

假设有一个org/foo带有提交的存储库,Z. 鲍勃做了一个叉子,bob/foo. 简还做了一把叉子,jane/foo。现在,Bob 创建了一个特性分支bob/foo:feature-a,提交A并发布了这个分支。然后 Jane 签出bob/foo:feature-a并创建一个新分支jane/foo:feature-b(jane 现在在本地有两个分支)。接下来,Bob 推送了一个新的提交,A'而 Jane 想要feature-b基于feature-a. 她是怎么做到的?

希望这张图有帮助

Time               0   1    2       3     4      5

bob/foo:feature-a      A - - - - - -A'
                     /  \
org/foo            Z     \
                          \
jane/foo:feature-b          A - B         magic  A - A' - B

Jane 如何同步她对 at 的本地结帐bob/foo:feature-at=4包含提交A',以便她可以B在其上重新提交提交?

标签: git

解决方案


在你的场景中说,我只是强调它:Bob 已经推送了提交A和一个名为的分支feature-aorg/foo暗示为“发布分支feature-a”)

所以 Jane 实际上从中央回购中获取了提交A和。feature-aorg/foo

一旦 Bob 添加了 commit并将其发布到A',Jane 将能够从 获取它:org/fooorg/foo

# from Jane's fork :
git checkout feature-b
git fetch origin             # will fetch commit A' as part of branch feature-a
git rebase origin/feature-a  # rebase on top of Bob's work

推荐阅读