diff --git "a/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" index 2f26c3487496491c74697226c1711e6263cfb082..a95f33f3415cf9e921669a930bebb91541f2310e 100644 --- "a/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" +++ "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" @@ -97,18 +97,23 @@ 正因如此,自由软件运动和开源软件运动有着密不可分的关系,两者的根本差别在于它们看待世界的方法。开源软件运动的理念更倾向于解决实际问题,既抓住了私有软件的痛点,又实现了与商业的融合。 -### Git 和 GitHub +### 开源、Git和代码托管平台 前面提到,开源软件是允许自由复制和重新分发的,那么分散的开发者之间是如何协作的呢?尤其是 Linux 这样依靠全世界热心的志愿者参与的项目。其实早年(1991-2002 年间)世界各地的志愿者是通过 diff 的方式把源代码补丁发给 Linus,然后由 Linus 本人通过手工方式合并代码。直到 2002 年,Linux 项目组才开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。 -但好景不长,2005 年,开发 BitKeeper 的商业公司结束了与 Linux 内核开源社区的合作。于是 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)决定开发自己的版本控制系统 —— Git。很快,Linux 内核的源码已经由 Git 全面管理了。Git 是完全分布式的,同时拥有强大的存储能力,支持离线操作和非线性分支管理,容易制作工作流程,使其非常适合于管理大型开源项目。 +但好景不长,2005 年,开发 BitKeeper 的商业公司结束了与 Linux 内核开源社区的合作。于是 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)决定开发自己的版本控制系统 —— [Git](https://git-scm.com/) 。很快,Linux 内核的源码已经由 Git 全面管理了。Git 是完全分布式的,同时拥有强大的代码管理能力,支持离线操作和非线性分支管理,使用 Git 可以让散布各地的开发者更加高效地协同工作,可以说,Git 的出现极大地推动了开源的发展。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1106/224307_aeb3bb91_1998139.jpeg "h320px_github_founders.jpg") > 图1.5 GitHub 创始人 P.J. Hyett、Tom Preston-Werner 和 Chris Wanstrath -2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub。可以说,GitHub 的出现让开源的工作方式变得更简单和有趣了。如今,每天都有无数来自世界各地的开发者在 GitHub 上进行交流,Github 已经成为一个包含问题追踪和版本控制的特殊社交网络。 +2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub。GitHub 的出现让开源的工作方式变得更简单和有趣了。如今,每天都有无数来自世界各地的开发者在 GitHub 上进行交流,Github 已经成为一个包含问题追踪和版本控制的特殊社交网络。 +初学者容易混淆 Git 和代码托管平台的概念。Git 是版本控制系统,开发者可以通过 Git 在本地工作空间建立项目仓库,每一个 Git 仓库都会包含一个 `.git` 目录,里面存储了该项目的每一次源代码的提交日志,可以方便地回退到过去的任意一个提交的版本与过去的代码进行比对。毫不夸张地说,Git 仓库就像是一个具有魔法的文件系统,Git 则帮我们记录该仓库下所有的读写信息,并在工作空间、暂存区、本地仓库之间随意切换。 + +而代码托管平台,比如 [GitHub](https://github.com/)、[GitLab](https://about.gitlab.com/)、[Bitbucket](https://bitbucket.org/)、[Gitee](https://gitee.com/) 等,则是基于 Git 的代码托管平台,通过网络为用户提供 Git 仓库托管服务。得益于 Git 分布式的特性,Git 代码托管平台上的仓库通常充当远程仓库的角色,便于多个开发者之间的同步。在此基础之上,代码托管平台还提供了许多协作功能,将版本管理、Bug 跟踪、代码审查、邮件列表、IRC 等众多功能组合在一起,以实现更高效的协同开发。简单来说,代码托管平台不仅仅提供代码托管服务,还有项目管理,甚至社交等功能。 + +总的来说,Git 和代码托管平台有直接关联,但又有许多不同的地方。关于 Git 和代码托管平台的操作,将在后续章节展开描述。 @@ -123,23 +128,6 @@ 所以,开源与我们息息相关,即便不写代码也可以参与开源(强烈建议)。 -## 开源、Git和代码托管平台 - - -``` -此节建议和前面“Git 和 GitHub”一节整合。否则有重复之嫌 -``` - - -[Git](https://git-scm.com/) 是一款分布式版本控制系统,Git 本身也是一个用 Git 管理的开源软件。使用 Git 可以让散布各地的开发者更加高效地协同工作,可以说,Git 的出现极大地推动了开源的发展。 - -初学者容易混淆 Git 和代码托管平台的概念。Git 是版本控制系统,开发者可以通过 Git 在本地工作空间建立项目仓库,每一个 Git 仓库都会包含一个 `.git` 目录,里面存储了该项目的每一次源代码的提交日志,可以方便地回退到过去的任意一个提交的版本与过去的代码进行比对。毫不夸张地说,Git 仓库就像是一个具有魔法的文件系统,Git 则帮我们记录该仓库下所有的读写信息,并在工作空间、暂存区、本地仓库之间随意切换。 - -而代码托管平台,比如 [GitHub](https://github.com/)、[GitLab](https://about.gitlab.com/)、[Bitbucket](https://bitbucket.org/)、[Gitee](https://gitee.com/) 等,则是基于 Git 的代码托管平台,通过网络为用户提供 Git 仓库托管服务。得益于 Git 分布式的特性,Git 代码托管平台上的仓库通常充当远程仓库的角色,便于多个开发者之间的同步。在此基础之上,代码托管平台还提供了许多协作功能,将版本管理、Bug 跟踪、代码审查、邮件列表、IRC 等众多功能组合在一起,以实现更高效的协同开发。简单来说,代码托管平台不仅仅提供代码托管服务,还有项目管理,甚至社交等功能。 - -总的来说,Git 和代码托管平台有直接关联,但又有许多不同的地方。关于 Git 和代码托管平台的操作,将在后续章节展开描述。 - - ## 参考资料 - [The Open Source Definition](https://opensource.org/osd)