了解 Bitbucket Cloud 中的代码审查





0/5 (0投票)
Fork 队友的存储库 / 复制你的 fork 并修改存储库 / 创建拉取请求
目标
通过向队友的存储库添加励志名言,学习如何使用 Git 的拉取请求进行代码审查。
任务简报
你已经开始掌握 Git,拥有了自己的存储库。但是如果你的团队正在宇宙旅行,而你希望能够协作同一个存储库呢?完成本教程,学习代码审查的基本知识。
涵盖的主题
- Fork 队友的存储库,创建拉取请求,并为队友的存储库做出贡献。
时间 | 目标读者 | 必备组件 |
---|---|---|
15 分钟 | 你有一些使用 Bitbucket Cloud 的经验。如果没有,请尝试我们的初学者教程之一。 | 你已安装 Git |
你有一个 Bitbucket 帐户 |
关于 Fork
当你使用其他用户的公共 Bitbucket 存储库时,通常你对代码有读取权限但没有写入权限。这就是 forking 概念的由来。其工作原理如下:
- Fork 存储库以将其复制到你自己的帐户。
- 将 fork 的存储库从 Bitbucket 克隆到你的本地系统。
- 修改本地存储库。
- 将更改推送到 Bitbucket 上的 fork 存储库。
- 从你 fork 的原始存储库创建拉取请求,以添加你所做的更改。
- 等待存储库所有者接受或拒绝你的更改。
如果存储库所有者接受拉取请求,Bitbucket 会将你的代码更改合并到原始存储库中。即使存储库所有者授予你对公共存储库的写入权限,也建议你使用 fork 和拉取请求。虽然拉取是 Git 和 Mercurial 工作流的一部分,但拉取请求和 fork 是仅由 Bitbucket 等存储库托管服务使用的概念。
Fork 队友的存储库
由于你的团队成员并非同时都在 Bitbucket 空间站中,因此你的一位团队成员认为收集一些励志名言是个好主意,无论他们是在为土星环上的新空间站制定计划还是冒险前往新的太阳系,任何人都可以在需要时参考这些名言!你的队友启动了一个存储库,希望每个人都可以贡献和启发。你决定要添加一条名言。
在此示例中,你将 fork 一个属于用户 tutorials
的公共存储库。
-
根据你正在使用的 DVCS 工具,使用 Bitbucket 右上角的搜索字段查找以下存储库之一
-
对于 Git,搜索
tutorials/tutorials.git.bitbucket.org
存储库。 -
对于 Mercurial,搜索
tutorials/tutorials.bitbucket.org
存储库。
-
-
从你打开的存储库中,点击屏幕左侧的 Fork。系统显示 fork 页面。
-
更改 名称,例如,更改为 myteamquotes。
-
在 Description 字段中,输入 Inspiring quotes for my team。
-
取消选中 Inherit repository user/group permissions。
-
按 Fork repository。
复制你的 fork 并修改存储库
你是否已经想好要与队友分享什么建议?让我们将 fork 的存储库复制到你的本地系统,以便你可以添加它。
我正在使用 Git!
步骤 1. 将你的 fork 克隆到本地系统
-
在 Bitbucket 中 fork 存储库的 Overview 页面,点击左侧的 Clone。系统显示一个弹出式克隆对话框。默认情况下,除非你已经为 Git 设置了 SSH,否则克隆对话框会将协议设置为 HTTPS。
-
从弹出式克隆对话框中,复制突出显示的克隆命令。
-
从终端窗口,将目录更改为你的 repositories 目录。
$ cd ~/repos
-
将你从 Bitbucket 复制的命令粘贴到命令行并按 Return。
-
当终端要求时输入你的 Bitbucket 密码。这是你创建 Bitbucket 帐户时输入的密码。如果你通过链接 Google 或 Facebook 创建帐户,请使用该帐户的密码。此时,你的终端窗口应如下所示:
$ cd ~/repos $ git clone https://emmap1@bitbucket.org/emmap1/myteamquotes.git Cloning into 'myteamquotes'... Password remote: Counting objects: 15, done. remote: Compressing objects: 100% (15/15), done. remote: Total 15 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (15/15), done. Checking connectivity... done.
你现在本地系统上有了 fork 的存储库。
步骤 2. 修改存储库源
此存储库包含一个带 editme.html
文件的网站。此文件列出了你太空队友的励志名言。现在,轮到你记录一条励志名言……或只是一条你最喜欢的名言。执行以下操作以贡献到此存储库:
-
使用 Google 或其他搜索引擎查找你最喜欢的名言。
-
导航到包含你的存储库文件的目录文件夹(例如
~/repos/myteamquotes
)。 -
用文本编辑器打开 editme.html 文件。
-
继续添加你选择的名言。如果你喜欢,可以为你的名言添加图片链接,只需将其放在
<blockquote>
标签上方即可。以下是添加内容的示例:
<!-- Please don't edit above or below this line. To add a quote, copy the div below and paste it at the bottom of the file. Then populate it with your quote and attribution. <div class="quote"> <blockquote>Your quote goes here</blockquote> <cite>Attribution</cite> </div> You can add an optional image tag. The image must be linked from an external site and not be in the repository. <img src="http://your_image_link.jpg"> <!--Please don't edit above this line.> <div class="quote"> <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Steve_Jobs_Headshot_2010-CROP.jpg/245px-Steve_Jobs_Headshot_2010-CROP.jpg"> <blockquote>Put a dent in the universe.</blockquote> <cite>Steve Jobs</cite> </div>
如果你不确定如何操作,可以复制文件顶部的示例标签,将其粘贴到页面上最后一条名言下方,然后用你的名言进行修改,如前面的示例所示。
-
保存并关闭文件。
-
从终端窗口,将目录更改为
myteamquotes
。$ cd ~/repos/myteamquotes
-
使用
git status
显示存储库的状态。$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: editme.html no changes added to commit (use "git add" and/or "git commit -a")
如果你添加了图片文件,你也会看到该文件。
-
使用
git add
在本地添加你的更改$ git add editme.html
-
使用
git commit
在本地提交你的更改$ git commit -m "Making a change" [master 83bc100] Making a change 1 file changed, 10 insertions(+), 5 deletions(-)
-
输入
git push
将更改推送到你的 Bitbucket fork,然后输入密码以完成更改推送。$ git push origin master Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 340 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) To https://emmap1@bitbucket.org/emmap1/myteamquotes.git 7479b42..83bc100 master -> master Branch master set up to track remote branch master from origin.
-
登录到你的 Bitbucket 存储库,并注意到你可以在活动流中看到你的推送。
我正在使用 SourceTree!
步骤 1. 将你的 fork 克隆到本地系统
-
从 Bitbucket 中 fork 存储库的 Overview 页面,点击 Clone in SourceTree 图标。
-
从弹出的窗口中,点击 Clone in SourceTree 按钮。
-
在 Clone New 窗口中,将 Destination Path 更新为 <local directory>/repos/myteamquotes/。此目标路径指的是你之前为存储库创建的 repos 目录。
-
点击 Clone 按钮。
步骤 2. 修改存储库源
此存储库包含一个带 editme.html 文件的网站。此文件列出了你太空队友的励志名言。现在,轮到你记录一条励志名言……或只是一条你最喜欢的名言。执行以下操作以贡献到此存储库:
-
使用 Google 或其他搜索引擎查找你最喜欢的名言。
-
在 SourceTree 中,点击 Show in Finder 按钮。
-
用文本编辑器打开 editme.html 文件。
-
继续添加你选择的名言。如果你喜欢,可以为你的名言添加图片链接,只需将其放在
<blockquote>
标签上方即可。以下是添加内容的示例:
<!-- Please don't edit above or below this line. To add a quote, copy the div below and paste it at the bottom of the file. Then populate it with your quote and attribution. <div class="quote"> <blockquote>Your quote goes here</blockquote> <cite>Attribution</cite> </div> You can add an optional image tag. The image must be linked from an external site and not be in the repository. <img src="http://your_image_link.jpg"> <!--Please don't edit above this line.> <div class="quote"> <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Steve_Jobs_Headshot_2010-CROP.jpg/245px-Steve_Jobs_Headshot_2010-CROP.jpg"> <blockquote>Put a dent in the universe.</blockquote> <cite>Steve Jobs</cite> </div>
如果你不确定如何操作,可以复制文件顶部的示例标签,将其粘贴到页面上最后一条名言下方,然后用你的名言进行修改,如前面的示例所示。
-
保存并关闭文件。
-
打开 SourceTree,并注意到你的存储库有 Uncommitted changes。
-
点击顶部的 Commit 按钮以提交文件。
-
在提供的空间中输入以下提交消息:“Adding new quote.”
-
点击消息框下方的 Commit 按钮。当你切换回视图时,你看到文件已提交但尚未推送到 Bitbucket 存储库。
-
在 SourceTree 中,点击 Push 按钮以推送你已提交的更改。
-
在出现的对话框中,点击 OK 将提交推送到存储库。
-
登录到你的 Bitbucket 存储库,并注意到你可以在活动流中看到你的推送。
创建拉取请求
为了用智慧之言打动并激励你的队友,你可以请求将你的更改添加到原始存储库中。为此,你将创建一个拉取请求。
步骤 1. 比较你的 fork 与原始存储库
当你在添加名言时,另一个队友可能已经更新了原始存储库。此时,你可以检查并决定是否需要相应地调整你的 fork。执行以下操作以将你的更改与存储库进行比较:
-
登录 Bitbucket 并导航到你的
myteamquotes
存储库。Fork 的存储库有一个特殊的组件,可以让你将你的 fork 工作与原始存储库进行比较。 -
点击页面左侧的 Compare 链接。Compare 部分有一个专门的视图,仅在 fork 的存储库中可用。
-
按 Compare 按钮以将你的 fork 存储库与原始存储库进行比较。
-
如果自你 fork 以来有人对原始存储库进行了更改,你将看到你的 fork 存储库落后于原始存储库一个或多个提交。如果是这种情况,要更新你的存储库,点击 Sync now,然后在出现的弹出窗口中点击 Sync。如果你想查看当前存储库与原始存储库之间的差异,点击 Diff 选项卡以比较更改。如果存在多个提交,你可以在此部分按文件查看它们的累积更改。点击 Side-by-side diff 按钮以并排显示更改。或者按 View file 按钮以在 Bitbucket 中查看完整文件。
-
切换回 Commits 选项卡,查看从本地存储库推送到 Bitbucket 中 fork 的提交列表。要单独查看特定提交的内容,点击 Commit 链接,Bitbucket 会将你带到 Commits 页面。
步骤 2. 创建拉取请求
现在是时候请求将你的名言添加到原始存储库中供所有人查看了!在 Bitbucket 中你的 myteamquotes
存储库中,执行以下操作:
-
按 Create Pull Request。系统显示请求表单。
-
填写表单。为了你今天的目的,你只需添加一个 Title。完成后的样子将是这样的:
-
按 Create pull request。系统在 tutorials 帐户的 原始存储库 的 Pull Request 页面打开你最新的请求。要查看针对此存储库的所有拉取请求列表,点击 Pull Request 选项卡。
创建拉取请求后,你无法删除它。如果你在发出请求后删除你的 fork,接收方只能拒绝你的请求,因为要拉取的存储库已不存在。
步骤 3. 了解你的拉取请求会发生什么
你必须等待存储库所有者接受你的拉取请求。当原始存储库所有者登录 Bitbucket 时,该用户的新闻源会显示你的拉取请求和你几天前 fork 的内容,如下图所示。
当存储库所有者点击你的拉取请求时,该用户可以 Merge、Edit 或 Decline 它。除了所有者之外,任何有权访问存储库的人都可以 Approve 该请求,这意味着该人审查了拉取请求中的更改。
你已经为存储库做出了贡献!
当你的拉取请求被接受或拒绝时,你将收到一封电子邮件。如果你想在等待期间尝试 Bitbucket 中的其他功能,请查看如何启用问题跟踪器、设置维基或添加用户权限。