不理解forking(分叉)是什么意思

5

我们刚刚在Bitbucket上建立了一个项目。我们把我们的“生产”[P]代码放在一个仓库里,然后我创建了一个分支[m],我的同事[C]也创建了一个分支。

    [P]
   /   \
 [M]   [C]

我做了一些更改,并创建了一个拉取请求并接受了它,因此[P]现在拥有了我的代码[M]。
这里是我困惑的地方。我的同事[C]的存储库如何获取更新的代码?
谢谢!
2个回答

9

您的同事需要从P中拉取(代码)。

如果您在P的master分支上工作,那么该命令应该是...

git pull origin master

3
注意:如果我们实际上讨论的是forking(即在服务器端克隆存储库的操作),而不是简单的克隆,则模式如下:
             BitBucket

    ------------[P]-----------
    |            ^           |
    |            |           |
 (forked) (pull request)  (forked)
    |                        |
    v                        v
   [M]                      [C]
    |                        |
----|------------------------|-----  
    |   Local workstations   |
    |                        |
 (git clone)             (git clone)
    |                        |
    v                        v
 [MLocal]                  [CLocal]

换句话说,MC位于BitBucket服务器上,而不是在MuserCuser的本地工作站上。
'origin'将是它们各自的upstream repo,即M或C,而不是P
(参见GitHub的“origin和upstream之间有什么区别”,但也适用于BitBucket)
这对Muser很有用,因为:
  • Muser可能不想直接推送到P(虽然他可以,他是BitBucket上P的所有者),所以这里,repo M充当他的“缓冲区”
  • Cuser没有权利在P上推送,因此他必须进行分叉
在这种情况下,为了让 CuserP 上看到任何更新,他需要将 P 添加为 CLocal 存储库的远程仓库(即他克隆的分支的本地存储库)的一部分。
git remote add P https://bitbucket.org/Puser/P
git pull P master

一旦这些新的变化在 CLocal 上集成并进行了测试,它们可以与 Cuser 引入的新的进化一起推回到 C 中。只有这些新的修改才会成为 pull request 的一部分,供 Muser(和 P 的所有者)审查并添加到 P 中。
同样地,Muser 需要将 P 添加为 MLocal 上的远程才能获取从 C 接受并添加到 P 中的任何修改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接