可以把 GitHub 理解为一个“程序员的社交网络”“代码的托管平台”,它不仅仅是一个存放代码的地方,更是一个全球性的协作社区,是现代软件开发中不可或缺的工具。

开源代码网站github
(图片来源网络,侵删)

GitHub 是什么?

GitHub 是一个基于 Git 的代码托管平台和协作服务。

  • Git:这是一个由 Linux 之父 Linus Torvalds 创建的分布式版本控制系统,Git 的核心功能是记录文件的每一次修改,让你可以轻松地回溯到历史版本、比较差异、合并不同人的修改,它最初是为了管理 Linux 内核源码而开发的。
  • GitHub:它为 Git 提供了一个云端服务器,你可以把你本地的 Git 仓库上传到 GitHub 上,这样你就可以:
    • 从任何地方访问你的代码。
    • 与其他人共享你的代码。
    • 邀请他人共同协作开发。

一个形象的比喻:

  • Git 就像一个U盘,你可以随身携带,记录所有文件的修改历史。
  • GitHub 就像一个网盘,你可以把 U盘 里的文件同步到这里,方便分享和多人协作。

GitHub 的核心功能

GitHub 提供了远超代码托管的功能,使其成为一个强大的生态系统。

代码托管与版本控制

这是最基础的功能,你可以创建一个“仓库”(Repository),将你的所有项目文件上传到这个仓库中,Git 会追踪每一次提交,形成一条清晰的历史记录。

开源代码网站github
(图片来源网络,侵删)

协作的核心:Pull Request (PR) / Merge Request (MR)

这是 GitHub 最强大的功能之一,它改变了团队协作的方式。

  • 工作流程
    1. 你想为一个项目贡献代码,但你不能直接修改原作者的仓库。
    2. 你会从原作者的仓库“复制”(Fork)一份到你自己的账户下。
    3. 在你自己的仓库里,你创建一个新的分支(Branch),进行代码修改和测试。
    4. 修改完成后,你向原作者的仓库发起一个“拉取请求”(Pull Request),并附上你的修改说明。
    5. 原作者和其他维护者可以审查你的代码、提出修改意见、进行讨论。
    6. 审查通过后,他们将你的代码合并(Merge)到主项目中。

这个过程就像写论文时,你把修改稿发给导师,导师批注后再让你修改,最后定稿发表。

问题追踪

每个仓库都有一个“Issues”板块,用户可以在这里:

  • 报告 Bug:描述程序出现的问题。
  • 提出新功能建议:建议增加哪些新功能。
  • 进行任务管理:将开发任务分解并在这里追踪。

这使得项目管理和沟通变得非常清晰。

代码审查

通过 Pull Request,团队成员可以轻松地对代码进行审查,审查者可以逐行评论、提出建议,确保代码质量,这是保证大型项目代码质量的关键环节。

自动化与持续集成/持续部署

GitHub 提供了强大的 GitHub Actions 功能,你可以在仓库中创建工作流文件,实现自动化任务,

  • 自动运行测试:每次你提交代码后,自动运行单元测试,确保你的修改没有破坏现有功能。
  • 自动构建和部署:当代码通过测试后,自动将项目部署到服务器。
  • 自动生成文档等。

这极大地提高了开发效率和软件交付的可靠性。

网站托管

GitHub 提供免费的静态网站托管服务,你只需要在仓库中创建一个名为 gh-pages 的分支,GitHub 就会自动将这个分支中的内容发布成一个网站,非常适合用来做个人博客、项目文档或作品集展示。

社区与发现

GitHub 是全球最大的开源社区,你可以:

  • 探索发现:通过搜索、趋势榜等发现有趣的开源项目。
  • 关注开发者:关注你欣赏的程序员,看他们在做什么。
  • 参与开源:为任何你感兴趣的开源项目贡献代码,这是提升编程能力的绝佳方式。

GitHub 的主要用途

开源项目

GitHub 是开源世界的中心,几乎所有知名的开源项目,如 Google TensorFlow, Microsoft VS Code, Facebook React 等,都以 GitHub 为家,开发者在这里发布源码、接受社区反馈、共同维护项目。

私人项目管理

虽然以开源闻名,但 GitHub 也被无数公司和开发者用于私人项目,通过付费的 GitHub Team 或 Enterprise 计划,可以创建私有仓库,进行内部的团队协作,代码不对外公开。

学习和提升

  • 阅读优秀代码:通过阅读顶级项目的源码,学习最佳实践和设计模式。
  • 构建个人作品集:将你的项目放在 GitHub 上,就是一份漂亮的简历。
  • 参与开源:为开源项目贡献代码是证明你技术能力和协作精神的最好方式。

招聘

很多公司会直接在 GitHub 上寻找候选人,一个活跃的、高质量的 GitHub 账户(有项目、有贡献、有文档)比一份普通的简历更有说服力。


如何开始使用 GitHub?

  1. 注册账号:访问 github.com,免费注册一个账号。
  2. 学习 Git 基础:在使用 GitHub 之前,强烈建议先学习 Git 的基本命令,如 clone(克隆)、add(添加)、commit(提交)、push(推送)、branch(分支)等,可以通过 Pro Git 免费书籍 或廖雪峰的 Git 教程等资源学习。
  3. 创建你的第一个仓库:登录后,点击 "New repository",按照提示创建一个新仓库。
  4. 上传你的代码:你可以通过 Git 命令行工具,或者直接在网页上拖拽文件的方式,将代码上传到你的仓库。
  5. 探索和参与:浏览你感兴趣的项目,尝试 Fork 一个项目,然后为其提交一个 Pull Request。

GitHub 与其他平台的比较

  • GitLab:功能与 GitHub 非常相似,也是一个强大的 DevOps 平台,它的一大特点是提供完全的免费私有仓库(社区版),并且可以自托管(在自己的服务器上部署),因此受到很多企业,尤其是需要数据私有化的企业的青睐。
  • Bitbucket:由 Atlassian 公司(Jira, Confluence 的开发商)推出,它与 Atlassian 的其他产品集成得非常好,并且同样提供免费的私有仓库,对于已经使用 Atlassian 生态系统的团队来说很有吸引力。

总结一下

  • GitHub:社区生态最庞大,开源项目最多,功能强大且易用,是学习、参与开源和展示个人能力的首选。
  • GitLab:功能强大,支持自托管,免费私有仓库是其优势,适合企业级 DevOps 需求。
  • Bitbucket:与 Atlassian 生态无缝集成,免费私有仓库,适合已使用 Jira 等工具的团队。

对于初学者和大多数开发者来说,GitHub 是最好的起点