GitHub:本质、功能及运作方式

作者: IT Sectr 发布日期: 2026-05-09 阅读时间: 8 分钟

GitHub — 是微软旗下最大的Git仓库托管、协作开发和流程自动化网络平台。它不仅提供带有版本控制的代码存储,还提供完整的项目管理工具集:Issue Tracking、带代码审查的Pull Request、用于CI/CD的Actions以及用于文档的Wiki。根据GitHub,2024的数据,该平台拥有超过1亿开发者和4.2亿个仓库。

要点

  • GitHub — 面向Git仓库的网络平台,提供代码审查、CI/CD和项目管理工具。
  • Pull Request — 通过讨论和代码检查进行更改的主要机制。
  • GitHub Actions 允许在无需外部CI服务的情况下自动化构建、测试和部署。
  • Issues和Projects — 内置的任务跟踪和Sprint管理系统。
  • GitHub Pages 为静态网站和文档提供免费托管。

什么是GitHub?

GitHub — 是一项用于存储和协作处理Git仓库的网络服务,由Tom Preston-Werner、Chris Wanstrath和P.J. Hyett于2008年创立。2018年,该公司被微软以75亿美元收购。该平台为所有Git操作提供Web界面,并在此基础上添加了社交功能:fork、星标、订阅、代码审查和内置的持续集成系统。

GitHub 与竞争对手的主要区别在于其开放的生态系统和最大的开发者社区。GitHub上托管着Android、Kubernetes、React、Swift、Kotlin以及成千上万其他开源项目的源代码。这使得该平台不仅成为代码存储工具,也成为开发者的社交网络:可以关注项目、讨论更改并通过pull request做出贡献。

根据微软2024年的报告,每天有超过1000万个新的Pull Request通过GitHub,月活跃用户数已超过1亿。该平台支持500多种编程语言、根据文件扩展名自动检测语言以及代码语法高亮。

GitHub的主要功能

GitHub的功能 远超简单的Git托管。该平台提供:GitHub Actions — 内置的CI/CD系统;GitHub Packages — 包和容器注册表;GitHub Codespaces — 基于VS Code的云端开发环境;GitHub Discussions — 社区论坛;GitHub Security — Dependabot用于自动更新依赖和扫描漏洞;GitHub Copilot — 用于编写代码的AI助手。

对于组织,GitHub提供GitHub Enterprise — 具有自托管(GitHub Enterprise Server)或云端部署(GitHub Enterprise Cloud)的企业版。企业功能包括SAML/SSO认证、活动审计、仓库安全策略以及99.95%可用性的SLA。企业版被Google、Apple和Airbnb等公司使用。

GitHub的一个重要特性是GitHub CLI (gh),它允许从命令行执行平台上的所有操作,无需使用Web界面。使用gh可以创建仓库、管理Issues、查看Pull Request以及直接从终端启动Actions,从而加快了习惯使用命令行的开发者的工作速度。

功能用途可用性
ActionsCI/CD和自动化免费2000分钟/月
Codespaces基于VS Code的云端IDE付费,60小时/月免费
Packages包和Docker镜像托管免费500MB
Dependabot自动更新依赖对公共仓库免费
Pages静态网站托管免费

Pull Request和代码审查

Pull Request (PR) — 是在GitHub项目中进行更改的主要机制。开发者创建一个包含更改的分支,将其发布到GitHub,并向主分支发送合并请求(Pull Request)。项目的其他参与者可以看到分支之间的差异(diff),可以对特定的代码行发表评论,提出更改建议,以及批准或拒绝请求。

GitHub上的代码审查过程是围绕PR构建的。每条评论都附加到diff的特定行,可以分为三种类型:Comment(普通评论)、Request Changes(需要修改)和Approve(批准)。在进行了更改之后,作者用新的提交更新PR,审查过程重复进行。当所有意见得到解决并且PR获得批准后,更改将被合并到目标分支。

bash
# 创建feature分支并推送
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug

# 通过CLI创建PR
gh pr create --base main --title "Fix login validation" \
    --body "Fixed edge case with empty email field"

# 查看和合并PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug

GitHub支持分支保护(branch protection rules):可以禁止直接推送到main分支,要求合并前必须获得一定数量的批准,运行Actions检查并要求分支在合并前保持最新。分支保护在Settings → Branches中配置,是生产项目的强制实践,可防止不稳定的代码意外进入主分支。

GitHub Actions和CI/CD

GitHub Actions — 是一个内置的CI/CD平台,允许直接在仓库中自动化工作流程。工作流程用YAML文件描述,位于.github/workflows/目录中。每个工作流程由一个或多个作业组成,这些作业在运行器上执行——运行Linux、Windows或macOS的虚拟机。

Actions支持事件驱动模型:工作流程在推送、创建PR、发布release、按计划或通过webhook时触发。这允许在无需开发者参与的情况下自动化构建、运行测试、静态代码分析、在应用商店发布和部署到服务器。以下是Android项目的工作流程示例:

yaml
name: Android CI

on:
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
      - name: Build with Gradle
        run: ./gradlew assembleDebug

Actions生态系统包括GitHub Marketplace上的超过20,000个现成的操作。流行的操作包括:checkout(克隆仓库)、setup-java/setup-node/setup-python(配置环境)、upload-artifact(保存构建产物)、cache(缓存依赖以加速)、slack-notify(向Slack发送通知)。Actions还支持矩阵构建——在多个操作系统或语言版本上同时运行。

GitHub Projects和Issues

Issues — 是GitHub内置的任务跟踪系统。每个Issue都有标题、描述、标签(labels)、指定的执行者(assignees)、里程碑(milestones)和相关的Pull Request。Issues可以模板化——用于错误报告、功能请求或问题,在创建时会自动使用不同的模板。

GitHub Projects(前身为Projects Beta)——是一个基于看板的项目管理工具,类似于Jira和Trello。Projects支持自定义字段(状态、优先级、冲刺)、与Issues和Pull Request的连接、任务状态更改时卡片的自动移动以及燃尽图形式的分析。Projects有两种模式:Table(表格视图)和Board(看板视图)。

为了管理发布,GitHub提供Milestones——由共同目标和截止日期连接的Issue和PR组。每个里程碑显示执行进度:有多少任务打开、有多少关闭以及是否遵守截止日期。里程碑与Releases集成——在发布release时,可以将其连接到里程碑,并根据已关闭的Issue自动在CHANGELOG中生成更改列表。

GitHub Pages和Wiki

GitHub Pages — 是用于静态网站的免费托管,自动将仓库内容发布到https://username.github.io/repository地址。Pages支持HTML、CSS、JavaScript和静态生成器:Jekyll(内置)、Hugo、Next.js(导出)和MkDocs。配置包括选择发布的分支和目录,以及支持自定义域名。

对于技术文档,GitHub提供Wiki——一个内置的wiki系统,也作为Git仓库存储。Wiki支持Markdown,允许通过Web界面和本地通过推送到wiki仓库来编辑页面。每个Wiki页面都有自己的更改历史,便于记录API、架构和项目流程。

GitHub Pages + Jekyll的组合——是文档网站的流行解决方案。Jekyll自动将Markdown文件转换为静态HTML页面,支持主题、导航和搜索。例如,Android开发者文档之前使用GitHub Pages上的Jekyll,现在使用内部平台,但成千上万的开源项目仍然使用这种组合来构建他们的网站。

GitHub CLI:无需浏览器的管理

GitHub CLI (gh) 允许通过命令行执行平台上的所有操作:创建仓库、管理Issues、查看和批准Pull Request、启动Actions。gh repo create my-project --public命令创建远程仓库并将其连接到本地仓库,gh pr create从当前分支创建Pull Request。CLI加快了喜欢终端而非Web界面的开发者的工作速度。

用于自动化的GitHub API

GitHub REST API和GraphQL API提供对所有平台功能的编程访问:创建Issue、管理用户、获取统计信息和管理Actions。GraphQL API更适合复杂查询,因为它允许在一次查询中仅获取所需字段。REST API的速率限制——对于经过身份验证的用户为每小时5000次查询。该API被广泛用于将GitHub与外部CI系统和内部DevOps工具集成。

用于快速笔记的GitHub Gist

GitHub Gist — 一种用于发布代码片段而无需创建完整仓库的服务。Gist支持语法高亮、嵌入外部网站和版本历史。每个Gist可以是公开的(在搜索结果中可见)或私密的(只能通过链接访问)。Gist用于在团队通信中快速共享配置、日志和代码示例,也可作为开发者的Pastebin类似工具。

常见问题

GitHub与GitLab有什么区别?

GitHub 侧重于开放社区和社交功能(fork、星标)。GitLab提供更强大的内置CI/CD和自托管(Self-Managed),没有Actions分钟限制。

GitHub团队版多少钱?

GitHub Team 每月每用户4美元,提供无限私有仓库、分支保护和Actions(3000分钟)。免费套餐适合小型开源项目。

如何创建私有仓库?

创建仓库时,选择Private而不是Public。在私有仓库中,只有被邀请的参与者才能看到代码。在免费套餐中,私有仓库最多可供3个协作者使用。

什么是GitHub Copilot?

GitHub Copilot — 基于OpenAI Codex的AI助手,提供实时代码自动补全。适用于VS Code、JetBrains和Neovim,支持所有流行的编程语言。

如何删除GitHub上的仓库?

进入Settings → Danger Zone → Delete this repository。删除是不可逆的——所有提交、Issues和Wiki都将被删除,无法恢复。请事先确保您有备份。

总结

  • GitHub — 最大的Git仓库托管平台,内置CI/CD和项目管理工具。
  • Pull Request 提供带有行内评论、审批和分支保护的代码审查流程。
  • GitHub Actions 通过仓库中的YAML配置自动化构建、测试和部署。
  • Issues和Projects 通过自定义字段和看板替代小型团队的Jira和Trello。
  • GitHub PagesWiki 为文档和静态网站提供免费托管。
  • 生态系统 包括Copilot(AI编程)、Codespaces(云端IDE)、Packages和Dependabot。
  • 创建仓库和第一个Pull Request开始——这将满足团队的基本需求。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读