答案 0 :(得分:359)
答案 1 :(得分:142)
以下是奥利弗·斯蒂尔关于这一切如何融合在一起的形象:
答案 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')
<强>叉强>
<强>克隆强>
答案 3 :(得分:6)
只是添加到其他人,一个特定于分叉的说明。
很高兴认识到,从技术上来说,克隆回购和分销回购是一回事。做:
git clone $some_other_repo
你可以在后面点击自己---你刚刚分开了一些其他的回购。
作为VCS,Git实际上都是关于然而,
当有人说我分叉回购X 时,他们意味着他们创造了 其他地方的repo克隆,意图公开 其他人,例如展示一些实验,或应用不同的 访问控制机制(例如,允许没有Github访问的人,但是 与公司内部账户合作)。
事实是:回购很可能是用其他命令创建的
git clone
,它最有可能托管在服务器上的某个地方
反对某人的笔记本电脑,而且很可能略有不同
格式(它是一个“裸仓”,即没有工作树)都是公正的
技术细节。
它很可能包含不同的分支集合, 标签或提交很可能是他们在第一次做到这一点的原因 的地方。
(点击“fork”时Github会做什么,只是克隆添加 糖:它为您克隆回购,将它放在您的帐户下,记录 从某个地方“分叉”,添加名为“上游”的遥控器,以及大多数 重要的是,播放漂亮的动画。)
当有人说我克隆了回购X 时,他们意味着他们创造了 有意在他们的笔记本电脑或台式机本地克隆repo 研究它,玩它,为它做贡献,或者从源头构建一些东西 代码。
Git的美妙之处在于它使这一切完美契合:所有这些repos共享 block 提交链的共同部分,因此可以安全地(参见下面的注释)来回合并更改在你认为合适的所有这些回购之间。
注意:“安全”,只要您不重写链的公共部分,并且只要更改不冲突。