使用 Git 的一点点疑惑:fork 跟 branch 的关系

一、引言

最近在工作中接触到了一种 “别样” 的代码管理方式:

一个项目新建出来,先由项目负责人从主干的分支上 fork 出来一个仓库,然后各项目成员向这个 fork 出来的仓库中拉取上传代码,最后再由项目负责人将测试完成的项目代码与分支合并。

虽然我之前接触 SVN 代码管理比较多,但是实际上对于 Git 管理代码也不是很有经验。虽然私底下也有使用 Git 管理工具,但也只是起到个人代码版本备份管理的作用。对于这种 “别样” 的代码管理方式,很是不理解:

为什么要 fork?

Git 出现的意义,不就是方便多人协作更加方便的拉取分支和合并分支的吗?

二、fork 其实并不是 Git 操作

经过我搜集资料,我发现了一个非常令 “新人” (也就是我)震惊的事实,那就是:

fork 其实并不是 Git 操作,而是一个 GitHub 操作

也就是说,对于原生的 Git 工具来说,是没有 fork 的操作的,fork 是类似 GitHub、码云等等在线代码托管平台提出来的功能。

fork 的作用,类似于当你在托管平台上看到了一个很有趣的项目,想要自己去改进它,然后你 fork 了它(类似克隆),最后你改了一个很厉害的功能出来,想要推给原 fork 项目,这时候你可以 pull request,一旦对方接受了你的 pull request,你的代码就有可能会出现在原 fork 项目中了。

非常形象的例子可以参考这篇博客:
GitHub的Fork 是什么意思

三、branch 当然是一个 Git 操作

根据上一个标题,这个标题所要讲述的内容就很明显了:

branch 当然是一个 Git 操作

对于远端仓库来说,默认有一个 master 的分支,也叫作主干。当你接到了一个新的需求,你可以拉一个分支出来,在这上面修改代码而不影响原主干代码,等修改测试完毕后再合并到主干上去。

这也就是非常常见的 Git 分支管理的内容。

四、fork 还是 branch

根据我们上述的讨论,我们发现 fork 仿佛与 branch 有了一些重合点。一个是 GitHub 操作,一个是 branch 操作,同样可以拉一个与主干不影响的地方进行开发,那么他们之间有什么不同呢?

我认为,他们之间的不同,也就是我们如何使用他们的原因。我认为:

fork,归根结底还是克隆,只是一种可以 pull request 可以合并到原项目的一种克隆

branch,则是一个项目仓库中的代码管理方式,一种方便多人协作的方式

也就是说,fork 可以给你的,远比 branch 要大的多。fork 其实就是一个新的仓库,你可以为所欲为,可以随便开分支,只要最后不乱 pull request 乱合并到原项目就不会出事;而 branch 其实只是一个分支,比一个仓库的范围要小得多,你实际上还是处于同一个项目仓库中。

五、总结

那么现在再来看看为何要这么管理代码:

项目负责人 fork 一份到自己仓库,项目成员上传到这个 fork 的仓库,最大限度对于原项目没有任何影响,只要 pull request 的时候小心就行。

这样的代码管理方式,非常适合同一个大型项目下同时开发着好多个子项目,各个子项目又有着各自的项目成员。

避免在同一个仓库中开太多的子分支是为了最大限度的避免出错,这种代码管理方式自有其意义。

哈哈哈,总算是解了自己的疑惑。希望能够对有同样疑惑的朋友一些启发 ^_^

To be Stronger:)

  • 58
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值