GitHub 是全球最流行的 Git 远程托管平台,提供了强大的开源协作代码管理项目管理CI/CD 集成功能。本章将介绍如何使用 GitHub 进行开源代码管理、如何创建和管理 GitHub 版本库,以及 GitHub 的高级功能,如 Pull Request、Issues、自动化等。

22.1 为开源代码提供版本库

GitHub 是一个理想的开源代码托管平台,适用于:

  • 个人项目:托管代码并进行版本管理。
  • 团队协作:多人开发、代码审查、任务跟踪。
  • 开源贡献:允许社区成员提交 Pull Request(PR)。

创建一个开源项目的关键步骤:

  1. 选择开源许可证(MIT、GPL、Apache 等)。
  2. 添加 README.md(介绍项目功能、安装方法)。
  3. 创建 CONTRIBUTING.md(贡献指南)。
  4. 配置 .gitignore(忽略不必要的文件)。
  5. 启用 Issues 和 Discussions(让社区参与)。

22.2 创建 GitHub 的版本库

22.2.1 在 GitHub 上创建新仓库

  1. 打开 GitHub 并登录。
  2. 点击 “New Repository” 按钮。
  3. 设置仓库名称(my-project)、可见性(Public/Private),并选择初始化选项(如 README.md)。
  4. 点击 Create repository 创建仓库。

22.2.2 将本地仓库推送到 GitHub

如果本地已有 Git 仓库,可以执行以下命令推送到 GitHub:

  1. git remote add origin https://github.com/user/my-project.git
  2. git branch -M main
  3. git push -u origin main

22.3 开源代码的社会化编程

GitHub 不仅是代码托管平台,还是一个社交开发平台,开发者可以关注、点赞、讨论和协作。


22.4 关注者

在 GitHub 上,用户可以关注(Follow)其他开发者,关注后可以在GitHub Feed 中看到对方的动态(新仓库、Pull Request、Star 等)。

  1. # 关注某个用户(在 GitHub 界面上)
  2. https://github.com/user

22.5 新闻源

GitHub 主页上的 News Feed 显示了关注的项目、组织和开发者的最新活动,包括:

  • 代码提交(Commits)
  • Issue 更新
  • Pull Request 状态
  • 关注的仓库的变更

22.6 复刻(Fork)

Fork 允许复制他人的仓库到自己的账户,适用于:

  • 贡献开源项目:Fork 代码,修改后提交 Pull Request。
  • 备份和实验:在不影响原仓库的情况下进行修改。
  1. # 在 GitHub 上 Fork 仓库后,克隆到本地
  2. git clone https://github.com/myusername/forked-repo.git

22.7 创建合并请求(Pull Request, PR)

Pull Request(PR)是 GitHub 协作的核心功能,允许开发者提交代码修改供仓库维护者审核和合并。

22.7.1 提交 PR 的步骤

  1. Fork 仓库并克隆到本地

    1. git clone https://github.com/myusername/forked-repo.git
    2. cd forked-repo
    3. git checkout -b my-feature
  2. 进行修改并提交

    1. git add .
    2. git commit -m "添加新功能"
    3. git push origin my-feature
  3. 在 GitHub 上提交 PR

    • 进入 Fork 的仓库页面,点击 New Pull Request
    • 选择 原仓库的 main 分支 作为目标分支,自己的分支 作为源分支。
    • 添加 PR 描述并提交。
  4. 维护者审核并合并

    • 维护者可以评论、请求修改,或者直接合并 PR。
    • 如果 PR 被合并,可以删除本地分支:

      1. git branch -d my-feature

22.8 管理合并请求

  • 查看所有 PR
    进入 GitHub 仓库,点击 Pull Requests
  • 审查 PR
    维护者可以使用 GitHub 提供的 Review 工具进行代码审查。
  • 合并 PR
    可以选择:
    • Merge commit(创建合并提交)。
    • Squash and merge(压缩提交历史)。
    • Rebase and merge(保持线性历史)。

22.9 通知

GitHub 提供 Issues、PR、Discussions 的通知系统:

  • 通过 邮件/桌面通知 订阅关注的仓库或 PR 变更。
  • 使用 @mentions(@user) 提醒特定成员。

22.10 查找用户、项目和代码

在 GitHub 搜索框中,可以:

  • 搜索仓库:repo:owner/repository-name
  • 搜索代码:function foo() in:file
  • 搜索 Issues:is:issue is:open label:bug
  1. # 使用 GitHub API 搜索
  2. curl "https://api.github.com/search/repositories?q=machine+learning"

22.11 维基(Wiki)

GitHub Wiki 允许开发者为项目添加文档。可以在 SettingsWiki 选项中启用。


22.12 GitHub Pages(用于网站的 Git)

GitHub 提供 GitHub Pages,用于托管静态网站。创建 gh-pages 分支即可自动部署网站:

  1. git checkout --orphan gh-pages
  2. git add .
  3. git commit -m "初始化 GitHub Pages"
  4. git push origin gh-pages

然后在 仓库 SettingsPages 启用页面。


22.13 页面内代码编辑器

GitHub 允许直接在线编辑代码文件:

  1. 打开文件 → 点击铅笔图标 ✏️
  2. 编辑后提交更改

22.14 对接 SVN

GitHub 兼容 SVN,可使用 SVN 方式检出:

  1. svn checkout https://github.com/user/repo/trunk

22.15 标签和自动清理

GitHub 允许给 Issue 和 PR 添加标签(labels),可以自动化管理任务。例如:

  • bug - Bug 相关问题
  • feature - 新功能请求

22.16 组织(Organization)

GitHub 允许创建组织(Organization),适用于团队协作:

  • 组织成员可以分配不同的权限(Owner、Member)。
  • 支持组织级别的仓库管理。

22.17 REST 风格的 API

GitHub 提供 API,可以自动化操作,例如获取仓库信息:

  1. curl "https://api.github.com/repos/user/repo"

22.18 闭源的社会化编程

GitHub 也支持私有仓库,适用于闭源开发和企业协作。


22.19 最终开放源代码

如果要将私有仓库变成开源,只需在 Settings 中修改 Public


22.20 开发模型

GitHub 支持多种开发模型,如:

  • Git Flow
  • GitHub Flow
  • Forking Workflow

22.21 GitHub 企业版

GitHub 提供企业版(GitHub Enterprise),适用于公司内部部署,提供更高级的权限管理和 CI/CD 集成。


22.22 关于 GitHub 的总结

本章介绍了 GitHub 的主要功能,包括 创建仓库、Pull Request、开源协作、GitHub Pages 等。GitHub 使 Git 更易用,并提供了强大的团队协作工具,使其成为开源和企业开发的首选平台。