跳到主要内容

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 学习之旅!