练习 - 通过管道推送更改
在本单元中,你通过将 Space Game 网站的一项细微更改推送到 GitHub 上来练习完整的代码工作流。
Mara 的任务是修改 Index.cshtml 网站的主页上的一些文本。 在本单元中,你将跟进观察。
让我们简要回顾一下完成该任务所需遵循的步骤:
- 将本地存储库与 GitHub 上最新的
main
分支进行同步 - 创建一个分支来保存你的更改
- 进行所需的代码更改并在本地验证它们
- 将你的分支推送到 GitHub
- 将 GitHub 上的
main
分支的最新更改都合并到你的本地工作分支,并验证你的更改是否仍然有效 - 向上推送任何剩余的更改,观察 Azure Pipelines 生成应用程序,并提交拉取请求
提取最新的主分支
在上一单元中,你创建了一个拉取请求,并将 code-workflow
分支合并到了 GitHub 上的 main
分支。 现在需要将对 main
做出的更改拉取回本地分支。
git pull
命令从远程存储库中获取最新代码并将其合并到本地存储库中。 如此即可知道你正在使用最新的代码库。
在终端上,运行
git checkout main
来切换到main
分支:git checkout main
若要向下拉取最新更改,请运行此
git pull
命令:git pull origin main
你可查看已更改的文件的列表。 可打开 azure-pipelines.yml 文件来验证它是否包含完整的生成配置 - 此步骤可选。
回想一下,团队成员在其中协作的 Git 存储库(例如在 GitHub 上)称为“远程”。 在这里,原点指定 GitHub 上的存储库。
稍后,你将从 Microsoft GitHub 存储库(称为“upstream”)中提取起始代码,。
生成并运行 Web 应用程序
为了确保你有用于开始更改的工作副本,请在本地生成和运行 Web 应用程序。
在 Visual Studio Code 中,转到终端窗口并运行以下
dotnet build
命令来生成应用程序:dotnet build --configuration Release
运行以下
dotnet run
命令来运行应用程序:dotnet run --configuration Release --no-build --project Tailspin.SpaceGame.Web
提示
如果在浏览器中看到与隐私或证书错误相关的错误,请在终端中按 Ctrl+C 停止正在运行的应用程序。
然后运行
dotnet dev-certs https --trust
并在出现提示时选择“是”,或查看此博客文章了解详细信息。在计算机信任本地 SSL 证书后,再次运行
dotnet run
命令,并从新的浏览器标签页转到http://localhost:5000
来查看正在运行的应用程序。
验证应用程序是否正在运行
在开发模式下,Space Game 网站配置为在端口 5000 上运行。
在新的浏览器标签页中,导航到 http://localhost:5000
来查看正在运行的应用程序。
您应该看到如下内容:
可以与页面进行交互,包括排行榜。 选择玩家姓名时,你会看到该玩家的详细信息。
完成后,回到终端窗口,并选择 Ctrl+C 以停止正在运行的应用程序。
创建功能分支
在本部分,要创建一个 Git 分支,以便你可处理文件,同时又不影响其他任何人。 在将这些文件推送到远程存储库之前,甚至都没有人知道你正在处理这些文件。
若要创建分支,请使用 git checkout
命令并为你的分支指定一个名称,就像在上一部分中所做的一样。
在创建分支之前,最好遵循命名约定。 例如,如果分支正在处理一个新功能,可能会使用 feature/<branch-name>
。 对于错误修复,可以使用 bugfix/<bug-number>
。 在本例中,你的分支名称将是 feature/home-page-text
。
在终端中,运行以下 git checkout
命令:
git checkout -B feature/home-page-text
与之前一样,feature/home-page-text
也基于 main
分支。
进行更改并在本地进行测试
在 Visual Studio Code 中,在 Tailspin.SpaceGame.Web/Views/Home 目录中打开 Index.cshtml。
在页面顶部附近查找此文本:
<p>An example site for learning</p>
提示
Visual Studio Code 还提供了一种在文件中搜索文本的简便方法。 若要访问搜索窗格,请选择侧窗格中放大镜图标。
将上一步中的文本替换为下面“拼错的”文本,然后保存文件:
<p>Welcome to the oficial Space Game site!</p>
请注意,“oficial”这个词是故意拼错的。 我们将在本模块的稍后部分处理此错误。
在终端中,运行以下
dotnet build
命令来生成应用程序:dotnet build --configuration Release
运行以下
dotnet run
命令来运行应用程序:dotnet run --configuration Release --no-build --project Tailspin.SpaceGame.Web
在新的浏览器标签页中,转到
http://localhost:5000
来查看正在运行的应用程序。你可看到主页包含更新后的文本。
完成后,回到终端窗口,然后按 Ctrl+C 来停止正在运行的应用程序。
提交和推送分支
此处将更改暂存到 Index.cshtml,将更改提交到你的分支,然后将你的分支向上推送到 GitHub。
运行
git status
以检查分支上是否存在未提交的更改:git status
可以看到 Index.cshtml 已修改。 与之前一样,下一步是确保 Git 跟踪此文件(称为暂存文件)。
运行以下
git add
命令暂存 Index.cshtml:git add Tailspin.SpaceGame.Web/Views/Home/Index.cshtml
运行以下
git commit
命令将暂存文件提交到feature/home-page-text
分支:git commit -m "Improve the text at the top of the home page"
运行此
git push
命令将feature/home-page-text
分支推送或上传到 GitHub 上的存储库:git push origin feature/home-page-text
与之前一样,你可从“分支”下拉框中找到 GitHub 上的分支。
观看 Azure Pipelines 生成应用程序
正如你之前所执行的操作,当你将更改推送到 GitHub 时,Azure Pipelines 会自动对生成进行排队。
(可选)在生成通过管道移动时对其进行跟踪,并验证生成是否成功。
将任何更改同步到主分支
在你忙于处理功能时,远程 main
分支可能已进行了更改。 在创建拉取请求之前,通常的做法是从远程 main
分支获取最新信息。
为此,请先签出或切换到 main
分支,然后将远程 main
分支与本地 main
分支合并。
接下来,查看功能分支,然后将功能分支与 main
分支合并。
现在让我们来试试这个过程。
在终端中,运行此
git checkout
命令来签出main
分支:git checkout main
若要下载对远程
main
分支的最新更改,并将这些更改合并到本地git pull
分支,请运行此main
命令:git pull origin main
实际上没有人对你的
main
分支进行任何更改,因此以下命令将指出所有内容都已经是最新的。From https://github.com/username/mslearn-tailspin-spacegame-web * branch main -> FETCH_HEAD Already up to date.
若要签出功能分支,请运行
git checkout
:git checkout feature/home-page-text
将你的功能分支与
main
合并:git merge main
同样,由于实际上没有人对你的
main
分支进行任何更改,你会发现所有内容仍然是最新的。Already up to date.
如果你确实合并了任何更改,则需要再次测试应用程序以确保一切功能仍然正常。
再次推送你的本地分支
将来自远程存储库的更改合并到本地功能分支时,需要再次将本地分支推送回远程存储库。
虽然你没有合并来自远程存储库的任何更改,但让我们来实际操作下此过程,看看会发生什么。
运行此
git push
命令将更改推送到 GitHub:git push origin feature/home-page-text
响应再次显示由于没有进行任何更改,因此你已是最新状态。
Everything up-to-date
提交拉取请求
在本部分,像以前一样提交拉取请求。
在浏览器中,登录到 GitHub。
转到 mslearn-tailspin-spacegame-web 存储库。
在下拉列表中,选择你的
feature/home-page-text
分支。若要启动拉取请求,请选择“参与”,然后选择“打开拉取请求”。
确保“基本”下拉列表指定的是你的存储库而不是 Microsoft 存储库。
重要
同样地,这一步很重要,因为无法将更改合并到 Microsoft 存储库中。
直接使用自己的存储库而不是分支时,默认情况下会选择
main
分支。为拉取请求输入标题和说明。
- 标题:改进主页顶部的文本
- 说明:已收到来自产品团队的最新主页文本。
若要完成拉取请求,请选择“创建拉取请求”。
此步骤不合并任何代码。 它告诉其他人你拥有你提议要合并的更改。
这会显示拉取请求窗口。 如之前一样,默认情况下,拉取请求会触发 Azure Pipelines 来生成应用程序。
(可选)选择“详细信息”链接或转到 Azure DevOps 上的项目,并观察管道运行情况。
生成完成后,回到你在 GitHub 上的拉取请求。
选择“合并拉取请求”,然后选择“确认合并”。
选择“删除分支”,从 GitHub 中删除
feature/home-page-text
分支。