时间:2010-07-25 16:14:24

标签: git branch clone git-clone gitx

4 个答案:

答案 0 :(得分:359)

答案 1 :(得分:142)

以下是奥利弗·斯蒂尔关于这一切如何融合在一起的形象:

enter image description here

答案 2 :(得分:7)

叉子与克隆 - 两个词都意味着复制

请参阅此diagram. (最初来自http://www.dataschool.io/content/images/2014/Mar/github1.png)。

.-------------------------.     1. Fork     .-------------------------.
| Your GitHub repo        | <-------------- | Joe's GitHub repo       |
| github.com/you/coolgame |                 | github.com/joe/coolgame |
| ----------------------- | 7. Pull Request | ----------------------- |
| master -> c224ff7       | --------------> | master -> c224ff7 (c)   |
| anidea -> 884faa1 (a)   |                 | anidea -> 884faa1 (b)   |
'-------------------------'                 '-------------------------'
    |                 ^
    | 2. Clone        |
    |                 |
    |                 |
    |                 |
    |                 |
    |                 | 6. Push (anidea => origin/anidea)
    v                 |
.-------------------------.
| Your computer           |  3. Create branch 'anidea'
| $HOME/coolgame          |
| ----------------------- |  4. Update a file
| master -> c224ff7       |
| anidea -> 884faa1       |  5. Commit (to 'anidea')
'-------------------------'

(a) - after you have pushed it
(b) - after Joe has accepted it
(c) - eventually Joe might merge 'anidea' (make 'master -> 884faa1')

<强>叉

  • 将您的远程仓库(云)链接到Joe的
  • 的副本
  • 您可以将副本克隆到本地仓库并使用F *%$ - up
  • 完成后,您可以回到遥控器
  • 然后,您可以通过单击pull-request
  • 询问Joe是否要在项目中使用它

<强>克隆

  • 复制到您当地的仓库(硬盘)

答案 3 :(得分:6)

只是添加到其他人,一个特定于分叉的说明。

很高兴认识到,从技术上来说,克隆回购和分销回购是一回事。做:

git clone $some_other_repo

你可以在后面点击自己---你刚刚分开了一些其他的回购。

作为VCS,Git实际上都是关于克隆分叉的。除了使用远程用户界面(例如cgit)进行“浏览”之外,与git repo几乎没有什么关系,不涉及 forking 在某些时候克隆回购。

然而,

  • 当有人说我分叉回购X 时,他们意味着他们创造了 其他地方的repo克隆,意图公开 其他人,例如展示一些实验,或应用不同的 访问控制机制(例如,允许没有Github访问的人,但是 与公司内部账户合作)。

    事实是:回购很可能是用其他命令创建的 git clone,它最有可能托管在服务器上的某个地方 反对某人的笔记本电脑,而且很可能略有不同 格式(它是一个“裸仓”,即没有工作树)都是公正的 技术细节。

    它很可能包含不同的分支集合, 标签或提交很可能是他们在第一次做到这一点的原因 的地方。

    (点击“fork”时Github会做什么,只是克隆添加 糖:它为您克隆回购,将它放在您的帐户下,记录 从某个地方“分叉”,添加名为“上游”的遥控器,以及大多数 重要的是,播放漂亮的动画。)

  • 当有人说我克隆了回购X 时,他们意味着他们创造了 有意在他们的笔记本电脑或台式机本地克隆repo 研究它,玩它,为它做贡献,或者从源头构建一些东西 代码。

Git的美妙之处在于它使这一切完美契合:所有这些repos共享 block 提交链的共同部分,因此可以安全地(参见下面的注释)来回合并更改在你认为合适的所有这些回购之间。

注意:“安全”,只要您不重写链的公共部分,并且只要更改不冲突。