使用 GitHub 工作流
学习目标
完成本单元后,您将能够:
- 列出 GitHub 工作流中的步骤。
- 说明远程和本地工作环境之间的区别。
- 完成创建新文件和更改现有文件的步骤。
GitHub 工作流概述
GitHub 流是一个紧凑的工作流,可让您安全地试验新想法,而不必担心损坏项目。主要步骤是:
- 从 main 创建一个分支
- 进行提交
- 发起拉取请求
- 协作
- 进行更多提交
- 与团队成员讨论并审阅代码
- 进行更多提交
- 部署进行最终测试
- 将您的分支合并到主分支
创建分支
分支是 Git 的核心概念。Git 中的一切都存在于分支上。默认情况下,项目的生产版本位于主分支中。
当您准备好测试新功能或修复问题时,创建项目的新分支。该分支一开始与主分支看起来完全相同,但是当您执行更改时,它只会体现在分支中。
进行提交
对项目中的文件进行更改后,将更改提交到功能分支。
发起拉取请求并进行合作
发起拉取请求并开始讨论您的更改。代码不一定是完美的,因此可以通过拉取请求来改进代码。
合并到主分支
一旦团队批准了您的更改,即可部署您的拉取请求并将其从功能分支合并到主分支。
理论上看起来很棒,但让我们来实际操作一下。
安装 Git
在继续进行本单元其余部分的 Git 示例之前,您需要先在您的计算机上安装 Git。这样您才可以在本地使用存储库。访问 Git 网站并按照说明安装正式版 Git。安装期间接受所有默认设置。
注册一个 GitHub 帐户并创建存储库
首先要做的是注册一个 GitHub 个人帐户。这是 GitHub 的免费版本,供您按照以下步骤操作。
接下来创建一个要使用的存储库。
- 在标题中单击
并选择 New repository(新建存储库)
- 在 Owner(所有人)处选择您的帐户。
- 存储库名称输入:
best-repo-ever
。
- 选择 Public(公用)。
- 在 Initialize this repository with(使用以下方式初始化此存储库)下,选择 Add a README file(添加 README 文件)。
- 然后,单击 Create repository(创建存储库)。
在 GitHub 上工作与在本地工作
您可以直接在 GitHub 上对项目进行更改,但大多数人更喜欢在本地计算机上工作,这样他们就可以在自己喜欢的 IDE 或文本编辑器中进行更改。让我们回顾几个重要的术语:
-
远程存储库是 GitHub 上存储库的副本。所有协作者都将他们的更改与此副本同步,使其成为团队的权威来源。
-
本地存储库是存储在用户计算机上的 Git 存储库。当本地目录链接到远程存储库时,本地存储库是远程存储库的完整副本,包括所有文件、分支和历史记录。
只有当您在 Git 中运行以下四个网络命令之一时,本地和远程存储库才会交互:git clone
、git fetch
、git pull
和 git push
。
要在本地存储库上工作,您必须先把它克隆到您的计算机上。要克隆存储库,请按以下步骤操作:
- 在 GitHub 中,单击刚刚创建的存储库的 Code(代码)选项卡。
- 单击 Code(代码)按钮。
- 将克隆 URL 复制到剪贴板。
- 打开命令行应用程序。如果您使用的是 Mac 或 Linux,则可以使用终端。如果您使用的是 Windows,我们建议您使用随 Git 安装的 Git Bash。
- 从 GitHub 检索存储库的完整副本:
git clone URL
将 URL 替换为您上面复制的克隆 URL。您应看到这样的效果:Cloning into 'best-repo-ever'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
- 克隆完成后,导航到克隆操作创建的新目录:
cd best-repo-ever
配置您的本地环境
在可以更改代码之前,您需要设置一些基本配置。这些配置一般只需要设置一次即可。Git 提供三个级别的配置选项。查看这些配置命令选项。
命令选项 |
描述 |
---|---|
git config --system |
这是系统范围的配置,适用于此计算机的所有用户。 |
git config --global |
这是用户级别的配置,仅适用于您的用户帐户。 |
git config --local |
这是存储库级别的配置,仅适用于设置它们的特定存储库。git config 的默认值是 |
Git 会自动添加多个配置——键入 git config --list
以查看所有三个级别的配置。
Git 使用您的用户名和电子邮件地址的配置为您创建的每个提交生成唯一的指纹。
如果没有这些设置,您将无法创建提交,因此请使用命令行应用程序自行设置:
git config --global user.name "First Last"
然后输入:
git config --global user.email "you@email.com"
配置 autocrlf
接下来,我们设置 core.autocrlf(autocrlf 代表自动回车换行)。每个系统以各自不同方式处理行尾和换行符。如果您打开一个在另一个操作系统上创建的文件并且没有设置这个配置选项,Git 会认为您根据操作系统处理行尾的方式对文件进行了更改。
对于 Windows 用户,输入:
git config --global core.autocrlf true
对于 Mac 或 Linux 用户,输入:
git config --global core.autocrlf input
使用 GitHub 跟踪文件
要使用 GitHub,您需要一种验证请求的方式。对于命令行交互,您可以使用 GitHub CLI;对于桌面端,可使用 GitHub Desktop。本徽章将使用 GitHub Desktop。
- 下载并安装 GitHub Desktop。
- 启动 GitHub Desktop。
- 点击 Sign in to GitHub.com(登录到 GitHub.com)。
- 按照指示允许访问。
- 在 Configure Git(配置 Git)处,选择 Use my GitHub account name and email address(使用我的 GitHub 帐户名称和电子邮件地址)。
- 单击完成。
欢迎使用 GitHub Desktop。您已从 GitHub 克隆了存储库,现在让我们将本地存储库连接到远程 GitHub 存储库。
- 点击 Add an Existing Repository from your Local Drive(从本地驱动器添加现有存储库)或点击 File(文件) > Add Local Repository(添加本地存储库)。
- 点击 Choose(选择)找到并选中 best-repo-ever 目录。
- 单击打开。
- 单击 Add Repository(添加存储库)。
现在有了存储库的本地副本并且已经配置了 Git 并通过了 GitHub 的身份验证,您可以使用 GitHub 工作流对项目进行一些更改。使用 Git 时,我们将在命令行、GitHub Desktop 和 GitHub 之间来回切换。让我们先对 README.md 文件进行一项简单的更改。
第 1 步:创建分支
要查看您的终端中本地分支列表,请键入 git branch
。目前您可能只会看到一个分支 main
。
让我们来创建一个新分支 (myfeaturebranch
):
- 创建分支:
git branch myfeaturebranch
- 检出到该分支:
git checkout myfeaturebranch
您应看到这样的效果:
git checkout myfeaturebranch Switched to branch 'myfeaturebranch' |
---|
第 2 步:更改 README.md 文件并将更改提交到您的本地存储库
现在您已经检出到新分支,我们将进行一些更改并查看 Git 的运行情况。
- 在您的存储库中打开 README.md。
- 使用您最喜欢的文本编辑器添加一些内容。
- 完成后,保存更改。
对文件进行一些更改后,就可以创建第一个快照了。从命令行工作时,您需要熟悉两阶段提交这个概念。
当您在本地工作时,Git 通过在三棵树中组织您的文件和更改来跟踪您的历史记录。这三棵树分别是 working、staging(也称为索引)和 history。添加、删除和更改文件是在 working 树中完成的。
要将更改添加到版本控制中,请创建代表离散工作单元的文件集合——我们在 staging 区域构建该单元。
当我们对配置的工作单元感到满意时,我们可以为暂存区中的所有内容创建快照。这被称为提交。
让我们使用命令 git status
、git add
和 git commit
完成该流程:
- 检查 working 树的状态:
git status
您会看到 README.md 文件显示在 Changes not staged for commit(未暂存以备提交的更改)中。
- 将文件从 working 树移动到暂存区:
git add README.md
- 查看变更情况请输入:
git status
您会看到 README.md 文件位于 Changes to be committed(待提交的更改)中。
- 创建我们的第一个快照:
git commit -m “My first commit”
- 让我们再看看存储库的状态:
git status
- 您会看到无需提交,working 树干净。
第 3 步:将更改发送到远程存储库
目前,此提交仅在本地完成。检查远程存储库时,您不会看到您的分支,也不会看到刚刚所做的更改。要远程查看您的更改,您必须首先将更改推送到远程存储库。
由于我们是在本地创建的这个分支,我们将使用 GitHub Desktop 将该分支发布到远程存储库。
- 打开 GitHub Desktop。
- 单击 Publish branch(发布分支)。
第 4 步:创建拉取请求
现在您已将更改推送到远程存储库,让我们在 GitHub 上打开一个拉取请求。
- 在 Web 上转到您的 GitHub 帐户。
- 单击 Pull request(拉取请求)选项卡。
- 单击 New pull request(新建拉取请求)。
- 在 Base(基础)下拉列表中选择 main
- 在 Compare(比较)下拉列表中选择 myfeaturebranch。您应看到这样的效果:
- 单击 Create pull request(创建拉取请求)。
-
Add a title(添加标题)应为
My first commit
(我的首次提交)。
- 如果需要可以添加描述。
- 单击 Create pull request(创建拉取请求)。
通过代码审阅控制代码质量
拉取请求不仅仅是对分支的比较,还是一种通过手动和自动检查代码来确保质量的方法。
一般对话
使用 Conversation(对话)选项卡以添加对拉取请求的一般评论。
行注释
在 Files Changed(更改的文件)选项卡中将鼠标悬停在一行上方,可看到一个蓝色的 + 图标。单击此图标可让您对特定行输入注释。可以利用这些行注释为建议的更改提供额外的说明。它们也将显示在对话视图中。
评价
在进行行注释时,您还可以选择 Start a Review(开始审阅)。创建评论时,您可以使用一条摘要消息将多条行注释组合在一起。提交评论时,您可以指明它是否只是评论或者是批准或更改请求。当与受保护的分支一起使用时,拉取请求审阅在 GitHub 中具有特殊的功能,如果拉取请求没有经过至少一次审阅,您可以阻止合并该拉取请求。
自动测试
如果您已将 CI/CD 与您的项目集成,您将在拉取请求中直接看到报告的测试状态。这些测试是高度可定制的。
部署
当团队成员审阅并批准了您的拉取请求,并且通过了所有必要的测试后,您就可以部署分支并在生产环境中验证您的更改。如果您的更改有问题,您可以通过将现有主分支部署回生产环境来进行回滚。
合并更改
合并分支时,您从功能分支中获取内容和历史记录并将其添加到主分支的内容和历史记录中。
合并操作快速简便。
- 在 GitHub 中,单击 Conversation(对话)选项卡。
- 单击 Merge pull request(合并拉取请求)。
- 添加 Commit message(提交消息)和 Extended description(扩展描述)。
- 点击 Confirm merge(确认合并)。
您的团队应制定有关应由谁来合并拉取请求的规则。一些选项包括:
- 应由创建拉取请求的人合并,因为需要由他们解决合并产生的问题。
- 在项目团队中指定一个人来合并。这确保了一致性,但可能造成瓶颈。
- 除了拉取请求的创建者之外的任何人都可以合并。这能确保至少进行了一次审阅。
保持同步
合并拉取请求后,删除 GitHub 上的分支。为此,请单击拉取请求屏幕上的 Delete branch(删除分支)。
但是,在 GitHub 上进行合并和删除不会自动更新您本地的存储库副本。让我们回到我们的命令行应用程序并同步所有内容。
首先,我们需要将在 GitHub 上所做的更改复制到存储库的本地副本中:
- 切换回默认分支:
git checkout main
- 从 GitHub 检索所有更改:
git pull