65.9K
CodeProject 正在变化。 阅读更多。
Home

将Visual Studio Team Services (VSTS) 和 Git 与 VS 2017 结合使用

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (5投票s)

2018 年 1 月 22 日

CPOL

12分钟阅读

viewsIcon

37721

如何将Visual Studio Team Services和Git与VS 2017结合使用。

目录

  1. 前言
  2. 在 VSTS 中创建项目
  3. 签入代码
  4. 代码比较和暂存,追溯(注解)
  5. 撤销和重置
  6. 设置工作项签入和生成配置
  7. 分支、拉取请求、压缩合并、挑选合并、变基和 Fork
  8. 标签
  9. 将 GitHub 中的 Git 存储库导入 VSTS 和 VS 2017

1 前言

本文包含什么内容?

本文讨论如何将 VSTS 和 Git 与 Visual Studio 2017 结合使用。VSTS 和 VS 2017 内置了使用 Git 存储库的 प्रावधान。本文使用 VSTS 和 VS 2017 社区版。它还将涉及部分 Scrum 板和生成配置,但不是全部。本文的重点是使用 VSTS 或 Visual Studio 的代码存储库。在适用时添加了屏幕截图。

本文不包含什么内容?

它不包含 Visual Studio 2015 的代码。某些功能也可能在 VS 2015 中可用,但并非全部。VSTS 还提供与命令行界面 (CLI)、IntelliJ、XCode 和 Eclipse 等工具的集成,但这不属于本文的范畴。它不包含持续集成 (CI) / 持续交付 (CD) 的方面。

什么是 VSTS?

VSTS 是一个集成的协作环境,支持 Git、持续集成以及用于规划和跟踪工作的敏捷工具。

它与 TFS 有何不同?

简而言之,TFS 是本地部署的,而 VSTS 是云端产品。VSTS 提供了一个可扩展、可靠且全球可用的托管服务。它享有 99.9% 的 SLA 支持,由 Microsoft 24x7 运营团队监控,并在世界各地的数据中心提供。

软件要求

Visual Studio 社区版 2017 和 VSTS 帐户,以及 Git 帐户。Git 是免费的,VSTS 帐户对最多 5 位用户是免费的。

入门

2 在 VSTS 中创建项目

在 VSTS 中单击“新建项目”。

输入项目名称、描述、版本控制和工作项过程,然后单击“创建”。

在 VSTS 中选择“代码”,然后单击“新建存储库”。输入存储库名称,添加 Readme 文件和 gitignore 文件。

Readme 文件用于简要介绍项目,gitignore 文件用于忽略跟踪临时文件和生成结果等文件。

打开 Visual Studio 2017,转到 Team Explorer,其中可以看到两个选项:Visual Studio Team Services 和 Github。

连接到 Visual Studio Team Services。它会要求提供凭据,输入创建 VSTS 帐户时使用的凭据。连接后,如下所示:

现在,VS 2017 已连接到 VSTS,可以看到“FirstApp”。单击“FirstApp”并连接。连接后,Visual Studio 会要求克隆代码。输入本地路径以克隆代码,然后单击“克隆”。现在,在本地路径下,文件已下载并可见。标记为红色的文件是 gitignore 文件。

在同一位置(C:\Users\<username>\Source\Repos\Demo)创建一个新的 ASP.NET Core 项目,并在 Visual Studio 中查看 Team Explorer。单击“更改”。

它将显示所有更改,输入注释,然后单击“全部提交”。

3 签入代码

Commit、Push、Fetch、Pull 和 Sync 之间有什么区别?

Commit

指提交到本地存储库。如果我们查看 Visual Studio 2017 的右侧角落,可以看到一个栏。下方红色的标记表示我的本地代码有 58 个更改,可供提交。

提交代码后,单击 master 并选择“查看历史记录”。

本地存储库中将显示完整的提交代码历史记录。

推送 (Push)

指提交到主存储库(即 VSTS),以便其他开发人员可以下载代码。

成功提交后,该栏将显示未推送的提交。由于我们只有 1 次提交,因此数字将显示为 1。单击它。

传出提交显示本地存储库中所有可用提交的列表。现在,单击推送。成功推送到主存储库后,该栏将显示 0 个待处理更改和 0 个待处理提交。

现在,返回 VSTS 门户,可以看到代码已签入。

提交 ID “dfc54661”与“查看历史记录”选项卡中的提交 ID 相匹配,如前所示。

获取 (Fetch)

获取其他团队成员的签入,但不会将其应用于您的本地代码。出于演示目的,我们可以直接在 VSTS 中使用文件上的编辑选项修改代码。

单击编辑。向“About.cshtml”添加一些文本并提交。然后,返回 Visual Studio,单击“同步”选项。

单击同步后,它将显示三个选项:同步获取拉取

单击获取,可以看到修改后的代码显示为传入提交,但尚未应用于代码。

拉取 (Pull)

将其他团队成员的 VSTS 签入应用于您的本地代码。用户单击拉取后,它将合并主存储库代码(即 VSTS 代码)与本地代码。

因此,修改的内容现在在本地可见。用户即使不先选择“获取”选项也可以“拉取”。拉取执行两个操作:获取 + 合并

同步 (Sync)

所有传入提交(获取)和传出提交(推送)都通过一次单击完成,并且代码在 VSTS 和本地存储库中都已合并,或者说代码已同步。

4 代码比较和暂存,追溯(注解)

代码比较

我们可以转到一个文件或文件夹,然后在 VSTS 中单击比较选项。它将列出所有提交,我们可以比较它们。

从 VS 2017 开始,这很简单。转到“查看历史记录”,然后通过选择任意两个提交来单击比较。单击“与源比较”。

暂存

这是一个非常重要的概念,如果开发人员只想提交少数文件。这与 Visual Studio 早期版本的“排除 - 包含文件”相同。

假设我修改了“About.cshtml”和“Contact.cshtml”,但只想提交“About.cshtml”。在这种情况下使用暂存。右键单击“About.html”并暂存。下拉菜单会自动更改为“提交暂存”,并可供提交。

追溯(注解) (Blame (Annotate))

追溯(注解)显示当前文件相对于完整提交历史记录。

用户随后可以打开之前提交的文件。

5 撤销和重置

撤销 (Revert)

撤销通过创建新提交来撤销一个提交。

例如,修改 Contact.cshtml 中的代码,提交它,转到“查看历史记录”并单击“撤销”。一旦用户同步代码,就会自动添加一个新的提交,其中包含与之前完全相同的代码。

Reset

它将 master 重置为本地的一个不同提交,而不是最新的一个。

重置 - 保留更改 (Reset- Keep Changes)

这将本地保留所有最新提交所做的更改,并且所有后续提交将显示为传入提交。Master 已更改。由于保留了更改,用户可以再次提交代码。

重置 – 删除更改 (Reset – Delete Changes)

这将删除所有最新更改,并且后续签入中的代码更改在本地不可见,但传入提交仍然可见。

6 设置工作项签入和生成配置

转到 VSTS 仪表板,创建一个任务。我们将此任务与签入关联。

将任务分配给资源(在本例中为 Rahul.mittal),输入描述,设置优先级,并指定工作量。单击保存并关闭。

用户保存时,每个任务都会分配一个唯一的任务编号。

返回 Visual Studio,进行更改,并在提交代码时关联工作项 4。

当我们再次转到 VSTS 中的任务板时,可以看到与该项关联的开发历史记录。

单击已提交的更改,可以看到比较结果。

现在,转到 VSTS 中的生成和发布选项。单击“新定义”。选择“ASP.NET Core”模板选项。用户可以根据应用程序类型选择其他模板。

选择代理队列为“托管 VS 2017”。单击“保存并排队”。

然后输入注释,选择分支为“Master”,然后单击“保存并排队”。在“Commit”文本框中,输入 40 个字符或留空,否则将显示以下错误:

“为 SourceVersion 指定的值不是有效的提交 ID。”

生成定义已排队。我们可以单击链接查看详细信息。

构建可能需要一些时间,最终将显示如下屏幕,并显示构建成功的消息。

您将收到一封电子邮件,确认构建成功。

如果代码有错误,它将抛出错误,例如,在下面的示例中,我们从代码中删除了分号 (;)。现在,我们推送此代码,然后再次运行生成定义。

在这里,生成失败了。:)

收到了关于生成失败的邮件通知。

转到 VSTS 应用程序页面,可以看到与签入次数、生成失败次数相关的统计信息,具体取决于所选的活动时间范围(在本例中为 7)。

7 分支、拉取请求、压缩合并、挑选合并、变基和 Fork

分支

转到 VS 2017,选择“分支”选项,然后输入要创建的新分支的名称(在下面的示例中为 Demo_Branch1)。

创建后,在 Visual Studio 的右侧角落可以看到两个选项。一个是“master”,另一个是“Demo-Branch1”。Visual Studio 会自动指向分支版本,尽管用户也可以选择“master”版本。

现在,右键单击并选择“推送分支”,它将在 VSTS 中可见。

拉取请求 (Pull-Request)

在分支版本中修改 Contacts.cshtml 的代码,提交并推送。

转到 VSTS,单击“拉取请求”,然后创建一个新的“拉取请求”。假设我们要将数据从分支合并到 master。选择源和目标。选择分支名称(Demo_Branch1)作为源代码路径,“master”作为目标路径。添加相关的标题。如果需要,添加审阅者,否则,如果审阅者是开发团队的一部分,则默认列出团队名称。

我们可以在下面看到,分支中推送的文件数量已显示。拉取请求也正在比较文件中的代码,可用于快速参考。

单击创建。

这将发送给审阅团队进行批准。有多个选项,如“批准”、“带建议的批准”、“等待作者”和“拒绝”。如果被拒绝,开发人员必须修改代码,并将代码推送到分支中,包含最新更改。

在此示例中,审阅者批准了。接下来,分配“工作项”。(我创建了一个新的工作项用于将代码从分支合并到主分支,生成的 ID 是 5)。

如果我们转到仪表板,可以看到任务 5 显示在“新建”列表中。

单击“完成”。将打开一个弹出窗口。显示三个复选框

  1. 合并后完成链接的工作项。此复选框已启用,因为我们将工作项与此拉取请求关联。否则,它将保持未选中状态并禁用。
  2. 合并后删除 <branch>。成功将代码合并到 master 后,它将删除该分支。在此示例中,它未选中,因为我仍需在分支上工作。
  3. 压缩合并 – 这会将所有提交历史记录合并为单个提交。否则,分支代码中的完整提交列表也会显示在 master 版本中。选择此复选框并单击“完成合并”。

我们可以看到 master 中的提交历史记录。也显示了拉取请求编号。请注意,此拉取请求编号与工作项编号无关。

此外,任务会自动移动到面板并关闭。

转到 Visual Studio 代码,并从 Visual Studio 右下角选择“master”。

我们可以看到传入的提交,已从分支代码合并。单击拉取,master 分支已同步。

如果不进行压缩合并会怎样?

我们可以看到,它显示了每个提交历史记录(红色标记),然后执行合并操作(绿色标记)。如果分支版本中有许多小型提交,建议在“master”中进行压缩合并,以获得更清晰的历史记录。

挑选合并 (Cherry-Pick)

挑选合并,简而言之,就是选择性合并,或者在合并操作中仅选择多个提交中的有限文件。

假设,从“Demo_Branch1”创建了一个新分支,并命名为“Demo_Branch2”。现在,“About.cshtml”(在本例中)文件在“Demo_Branch2”中被错误修改(下方标记为红色)并提交。

它本应在“Demo_Branch1”中修改。转到“管理分支”,选择“Demo_Branch1”并单击签出。

现在,查看“Demo_Branch2”的历史记录。选择要挑选的提交。右键单击并挑选错误的提交。我们可以看到更改已反映在“Demo_Branch1”中。

现在,我们可以推送“Demo_Branch1”的提交,并撤销“Demo_Branch2”的提交。

变基 (Rebase)

变基用于一次性将 master 的提交应用到分支。变基不是“合并”。

例如,在 master 中,我们有HomeController 中的 2 个提交。

而在 Demo_Source1 中,我们在“Index.cshtml”文件中有一个提交。

在“Demo_Branch1”进行修改的同时,我想将“master”的提交应用到“Demo_Branch1”。这可以通过变基来完成。

转到“管理分支”。右键单击“变基到”。选择“master”作为“到分支”。单击变基。如果需要,合并代码…… 我们可以看到“master”的更改已变基到“Demo_Branch1”中。

注意
  1. 如果更改未提交,变基将不起作用。
  2. 建议仅对未推送的更改进行变基。

分叉

Fork 用于某些开发人员开发一项独立功能,然后想将其推送到 master。Fork 增加了与主代码的隔离,从而提高了主代码的稳定性。创建 fork 时,Visual Studio 右下角不会显示任何其他分支。

但是,可以使用拉取请求将代码合并到 master。

8 标记 (Tagging)

使用创建标记选项来标记签入。这对于标记很有用,以后可以用于搜索提交。

右键单击并单击“创建标记”。填写“标记名称”和描述,然后单击“创建标记”。

刷新历史记录并查看标记。

然而,目前,标记无法通过 Visual Studio 推送到主存储库。我们应该在 VSTS 中创建标记,或者使用命令行。在 VSTS 中右键单击提交并进行标记,例如,Fork_MainBranch

同步代码,并刷新 Visual Studio 2017 中的历史记录。“Fork_MainBranch”可见。

9 将 GitHub 中的 Git 存储库导入 VSTS 和 VS 2017

按照步骤 2 中的说明在 VSTS 中创建项目。在“导入存储库”中单击“导入”。

转到 GitHub 帐户,选择在 GitHub 中创建的任何项目。然后单击“Clone or Download”按钮。

复制 URL,并在 VSTS 的“导入”表单中填写。由于项目是公共的,不需要授权,并且项目可以从 Git 中直接导入。

将收到一封电子邮件,确认导入成功。

按照步骤 2 中的说明将存储库克隆到本地。添加虚拟文件并提交/推送代码。现在它在 VSTS 中可见。

我们可以使用 Visual Studio 2017 直接从 GitHub 导入。在 VS 2017 Team Explorer 中单击 GitHub 选项。单击克隆。

单击克隆并选择项目。

单击克隆并在文件夹位置添加文本文件。

再次返回 VS 2017,单击“更改”,然后提交/推送。

转到 GitHub 查看签入。

感谢阅读!

想要更多此类教程?请在下方评论与我们联系。

© . All rights reserved.