不明白分叉

时间:2012-04-13 23:50:10

标签: git bitbucket

我们刚刚用bitbucket建立了一个项目。我们将'生产'[P]代码放在repo上,然后我创建了一个fork [m],然后我的同事[C]也创建了它的一个分支。

    [P]
   /   \
 [M]   [C]

我做了一些更改,并创建了一个拉取请求并接受了它,所以[P]现在有了我的代码,[M]。

这是我感到困惑的地方。 [C],我的同事回购如何获得更新的代码?

谢谢!

2 个答案:

答案 0 :(得分:9)

你的同事需要从P开始。

如果您正在使用P中的master分支,那么命令将是......

git pull origin master

答案 1 :(得分: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”将是MLocalCLocal的{​​{3}}回购,即M或C,不是P
(有关GitHub的信息,请参阅“upstream”,但也适用于BitBucket)

这对Muser很有用,因为:

  • Muser可能不想直接推送到P(他可能,他是BitBucket上P的所有者),所以在这里,repo M充当他的“缓冲”
  • Cuser无权推送P,所以他也必须分叉

在这种情况下,要Cuser查看P上的任何更新,他需要将P添加为CLocal回购的远程(即他的克隆本地回购他的叉子)

git remote add P https://bitbucket.org/Puser/P
git pull P master

在本地集成并测试这些新更改后(CLocal),可以将这些更改推回C,同时Cuser引入新的演变。只有那些新修改才会成为What is the difference between origin and upstream的一部分,Muser(和P所有者)可以检查并添加到P.

同样,Muser需要将P添加为MLocal的远程,以便从C中取回已被P接受的任何修改}。