跳到主要内容

GitHub 平台教程

GitHub 是全球最大的代码托管平台和开发者社区,承载着超过 4.2 亿个代码仓库和 1.5 亿开发者。它不仅是一个代码托管服务,更是一个完整的开发者协作生态系统,涵盖版本控制、持续集成、项目管理、安全扫描、AI 辅助编程等功能。

什么是 GitHub?​

GitHub 是一个基于 Git 的代码托管平台和开发者协作工具。它提供了 Web 界面和 API,让开发者可以更方便地使用 Git 进行版本控制,同时提供了丰富的协作功能。

从技术角度来看,GitHub 包含以下核心能力:

  • 版本控制:基于 Git 的分布式版本控制,管理代码变更历史
  • 代码托管:提供云端和私有化部署的代码存储服务
  • 协作开发:Pull Request、代码审查、Issue 追踪等协作机制
  • 自动化:GitHub Actions 提供 CI/CD 和工作流自动化
  • 安全:代码扫描、依赖检查、密钥检测等安全功能
  • AI 辅助:GitHub Copilot 提供智能代码补全和聊天辅助

GitHub 的发展历程​

理解 GitHub 的发展历程有助于更好地认识这个平台的定位和演进方向。

创立与早期发展(2007-2012)​

GitHub 的故事始于 2007 年。当时,Tom Preston-Werner 和 Chris Wanstrath 都在使用 Git 进行版本控制,但他们发现 Git 虽然强大,却缺少一个友好的协作平台。他们希望建立一个让 Git 更易用的服务。

2007 年 10 月 19 日,GitHub 的开发正式开始。2008 年 2 月 8 日,GitHub 公司(当时名为 Logical Awesome LLC)成立,同年 4 月 10 日正式上线。四位创始人分别是 Tom Preston-Werner、Chris Wanstrath、P. J. Hyett 和 Scott Chacon。

GitHub 一上线就迅速获得了开发者的青睐。2009 年 2 月,GitHub 在上线第一年就积累了超过 46,000 个公开仓库。同年,用户数突破 10 万。到 2010 年,托管的仓库数量达到 100 万,2011 年翻倍至 200 万。2013 年,用户数突破 300 万,仓库数超过 1000 万。

快速扩张期(2012-2018)​

2012 年 7 月,GitHub 获得了来自 Andreessen Horowitz 的 1 亿美元风险投资,估值达到 7.5 亿美元。这是 GitHub 的首次外部融资,标志着公司进入快速发展阶段。

2015 年,GitHub 又获得了 2.5 亿美元的 B 轮融资,估值约 20 亿美元。同年,GitHub 在日本开设了首个美国以外的办公室。

这一时期,GitHub 推出了多个重要功能:

  • 2013 年:GitHub Pages 支持 Jekyll 静态网站生成
  • 2016 年:GitHub 学生开发者包和 Campus Experts 计划
  • 2018 年:GitHub Actions 预览版发布

微软收购与新时代(2018 至今)​

2018 年 6 月 4 日,微软宣布以 75 亿美元收购 GitHub。这笔交易于同年 10 月 26 日完成。收购后,GitHub 继续独立运营,由 Xamarin 创始人 Nat Friedman 担任 CEO。

微软收购 GitHub 的消息最初引起了一些开发者的担忧,担心微软会改变 GitHub 的开放性。但实际上,在 Satya Nadella 的领导下,微软已经转向拥抱开源。收购后,GitHub 推出了一系列重要更新:

  • 免费私有仓库:2019 年 1 月,GitHub 开始提供免费的私有仓库
  • GitHub Actions 正式发布:2019 年 11 月,Actions 正式上线,成为 CI/CD 的重要选择
  • GitHub Copilot:2021 年推出 AI 编程助手,基于 OpenAI Codex 模型
  • GitHub Codespaces:云端开发环境,让开发者可以快速启动配置完整的开发环境
  • GitHub Copilot X:集成 GPT-4 的新一代 AI 助手

2021 年 11 月,Thomas Dohmke 接替 Nat Friedman 成为 GitHub CEO。截至 2025 年,GitHub 已拥有超过 1.5 亿用户和超过 10 亿个仓库,是全球最大的代码托管平台。

GitHub 与 Git 的关系​

很多初学者会混淆 Git 和 GitHub,理解它们的区别至关重要。

Git 是工具:Git 是 Linus Torvalds(Linux 之父)在 2005 年开发的分布式版本控制系统。它是一个命令行工具,安装在本地计算机上,用于追踪文件的变更历史。Git 的核心功能包括分支管理、合并、变基等版本控制操作。

GitHub 是平台:GitHub 是建立在 Git 之上的托管服务和协作平台。它提供了:

Git 提供的功能GitHub 提供的功能
本地版本控制远程仓库托管
分支和合并Pull Request 工作流
提交历史查看代码审查和讨论
本地标签管理Issue 追踪系统
本地钩子脚本Actions 自动化
命令行界面Web 界面和 GUI

简单来说,Git 是版本控制的引擎,GitHub 是让这个引擎更容易使用、更适合团队协作的外壳和服务。你可以使用 Git 而不用 GitHub(可以选择 GitLab、Bitbucket 或自建服务器),但使用 GitHub 必然需要使用 Git。

GitHub 核心概念​

仓库(Repository)​

仓库是 GitHub 的基本单位,类似于一个项目的文件夹。一个仓库包含:

  • 代码文件:项目的源代码
  • 文档文件:README、贡献指南、许可证等
  • 配置文件:.gitignore、工作流配置等
  • 变更历史:所有提交的完整记录
  • 分支:不同的开发线
  • 标签:版本标记

每个仓库都有唯一的标识符 owner/repo-name,例如 facebook/react。

分支(Branch)​

分支是仓库的并行版本。默认分支通常命名为 main(或历史上的 master),代表项目的稳定版本。

分支的主要用途:

  • 功能开发:在新分支上开发新功能,不影响主分支
  • 问题修复:创建修复分支处理 bug
  • 实验性更改:在不破坏稳定代码的情况下尝试新想法
  • 发布管理:维护不同版本的发布分支

提交(Commit)​

提交是代码变更的基本单位。每次提交记录:

  • 变更内容(哪些文件被修改,具体改动是什么)
  • 提交信息(描述本次变更的目的)
  • 提交者信息(谁提交的)
  • 提交时间
  • 唯一的 SHA 标识符

好的提交信息应该简洁明了地描述变更内容,方便其他开发者理解历史记录。

Pull Request​

Pull Request(PR)是 GitHub 协作的核心机制。它是一组变更的正式提交请求,包含:

  • 源分支:包含变更的分支
  • 目标分支:要合并到的分支
  • 变更说明:描述本次变更的目的和内容
  • 代码差异:展示所有变更
  • 讨论区:审查者可以评论和讨论
  • 状态检查:CI/CD 结果显示

PR 的工作流程:

  1. 开发者在新分支上进行修改
  2. 提交完成后创建 Pull Request
  3. 团队成员审查代码
  4. 通过审查后合并到目标分支

Issue​

Issue 用于追踪任务、问题、功能请求等。每个 Issue 包含:

  • 标题和描述
  • 标签(用于分类)
  • 指派人
  • 里程碑
  • 关联的 Pull Request

Issue 可以用来:

  • 报告 bug
  • 请求新功能
  • 讨论技术方案
  • 追踪项目进度

Fork​

Fork 是将他人的仓库复制到自己的账户下。这使得你可以:

  • 自由修改代码而无需原作者的许可
  • 在自己的仓库中实验新功能
  • 通过 Pull Request 贡献回原项目(上游仓库)

Fork 是开源协作的重要机制,让任何人都可以参与到任何公开项目的开发中。

组织(Organization)​

组织是多个仓库和成员的集合,适合团队和企业使用。组织提供:

  • 统一的成员和权限管理
  • 团队分组
  • 组织级别的设置和策略
  • 集中计费

GitHub 与其他平台对比​

市面上有多种代码托管平台,各有特点。以下是主流平台的对比:

特性GitHubGitLabBitbucket
开发者社区最大,超 1.5 亿用户较大较小
开源项目最多较多较少
私有仓库免费,无限免费,无限免费,有限
CI/CDGitHub ActionsGitLab CI(内置)Pipelines
自托管GitHub Enterprise开源版本可自托管Data Center
容器注册GHCR内置不支持
项目管理ProjectsIssues + BoardsJira 集成
代码审查Pull RequestMerge RequestPull Request
AI 辅助CopilotGitLab Duo不支持

GitHub 的优势​

  • 最大的开发者社区:开源项目最活跃,文档和资源最丰富
  • 易用性:界面设计优秀,学习曲线平缓
  • 生态系统完整:从代码托管到 CI/CD、安全、AI 辅助的一站式服务
  • 集成丰富:支持大量第三方服务和工具
  • 微软生态整合:与 Azure、Visual Studio 等微软产品深度集成

GitLab 的优势​

  • 内置 DevOps 工具链:CI/CD、安全扫描、监控等开箱即用
  • 自托管灵活:开源版本可以免费自托管
  • 权限管理精细:企业级权限控制更完善

Bitbucket 的优势​

  • Atlassian 生态集成:与 Jira、Confluence 无缝协作
  • 企业特性:更适合大型企业的权限和合规需求

对于个人开发者和小团队,GitHub 通常是首选。对于需要完整 DevOps 工具链的团队,GitLab 值得考虑。对于使用 Atlassian 产品栈的企业,Bitbucket 可能更合适。

GitHub 免费额度​

GitHub 对个人和开源项目提供了慷慨的免费额度:

功能免费额度
公开仓库无限
私有仓库无限
私有仓库协作者无限
GitHub Actions每月 2000 分钟
GitHub Packages500MB 存储
GitHub Pages100GB 带宽/月
GitHub Codespaces每月 120 小时(2 核心)

对于开源项目,GitHub 提供更多免费资源,包括无限制的 Actions 时间。

GitHub 生态系统​

GitHub 不仅是一个代码托管平台,更是一个完整的开发者生态系统。

GitHub Actions​

GitHub Actions 是 GitHub 的自动化平台,用于构建 CI/CD 流水线。它可以:

  • 自动运行测试
  • 构建和部署应用
  • 执行代码质量检查
  • 发布软件包

Actions 的特点:

  • 无需外部服务,直接集成在 GitHub 中
  • 支持 Linux、Windows、macOS 运行环境
  • 丰富的 Marketplace 提供大量可重用的 Action

GitHub Packages​

GitHub Packages 是 GitHub 的包托管服务,支持:

  • npm(JavaScript)
  • Docker 容器镜像
  • Maven/Gradle(Java)
  • NuGet(.NET)
  • RubyGems(Ruby)

使用 GitHub Packages 可以让代码和依赖在同一个平台上管理。

GitHub Pages​

GitHub Pages 提供免费的静态网站托管,适合:

  • 项目文档网站
  • 个人博客
  • 作品集展示
  • 开源项目主页

支持自定义域名和 HTTPS,与 Jekyll 静态网站生成器深度集成。

GitHub Codespaces​

Codespaces 提供云端开发环境,特点:

  • 几秒钟内启动完整的开发环境
  • 支持自定义配置(通过 Dev Container)
  • 在浏览器或本地 VS Code 中使用
  • 环境一致,团队成员使用相同配置

GitHub Copilot​

Copilot 是 GitHub 的 AI 编程助手,功能包括:

  • 智能代码补全
  • 代码解释
  • 单元测试生成
  • 代码审查建议

Copilot 支持多种编程语言和主流 IDE。

GitHub Security​

GitHub 提供多层安全功能:

  • Dependabot:自动检测和修复依赖漏洞
  • Code Scanning:使用 CodeQL 扫描代码漏洞
  • Secret Scanning:检测意外提交的密钥
  • Security Advisories:安全公告和 CVE 管理

使用场景​

开源项目托管​

GitHub 是开源项目的首选平台。通过 Fork 和 Pull Request 机制,任何人都可以参与开源项目。GitHub 的社交功能(Star、Follow)也有助于项目的传播和发展。

团队协作开发​

企业团队使用 GitHub 进行日常开发:

  • 通过 PR 进行代码审查
  • 使用 Issue 追踪任务和问题
  • 通过 Projects 管理项目进度
  • 使用 Actions 自动化测试和部署

持续集成与部署​

GitHub Actions 提供完整的 CI/CD 能力:

  • 代码提交自动运行测试
  • 测试通过自动部署到测试环境
  • 合并到主分支自动部署到生产环境

个人作品集​

开发者可以通过 GitHub 展示自己的技术能力:

  • 公开自己的项目代码
  • 通过贡献图展示活跃度
  • 通过 README 和个人主页展示技能

文档和知识管理​

GitHub 也可以用于文档管理:

  • 使用 Markdown 编写文档
  • 使用 Wiki 组织知识库
  • 使用 Pages 发布文档网站

教程目录​

基础功能​

  • 环境配置 - GitHub 账号注册、SSH 配置、CLI 工具

自动化​

包管理​

部署​

开发与协作​

安全​

  • 安全功能 - Dependabot、Code Scanning、Secret Scanning

AI 辅助​

速查​

学习建议​

  1. 先掌握 Git 基础:GitHub 建立在 Git 之上,理解 Git 的核心概念(分支、合并、变基)是使用 GitHub 的前提

  2. 动手实践:创建一个测试仓库,尝试各种功能:

    • 创建和切换分支
    • 提交变更并推送
    • 创建 Pull Request
    • 配置一个简单的 Actions 工作流
  3. 阅读官方文档:GitHub 文档更新频繁且质量很高,是学习新功能的最佳资源

  4. 参与开源:找一个感兴趣的开源项目,从修复文档或小 bug 开始贡献

  5. 使用 CLI 工具:GitHub CLI (gh) 可以大大提高效率,建议尽早学习

参考资源​

准备好开始学习了吗?点击下一章开始你的 GitHub 学习之旅!