Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Visual Studio 2019 |Visual Studio 2022
Git 使用 提交元数据 (如父链接、作者详细信息和时间戳)来跟踪存储库中更改的历史记录。 可以查看 Git 历史记录,了解文件何时更改、更改了哪些文件和进行了哪些更改。
当人们使用拉取请求来创建和合并功能分支到目标分支时,目标分支的开发历史记录可能不是一条按时间顺序的直线。 因此,当你查看目标分支上文件更改的历史记录时,请记住,提交顺序受 合并策略 和合并日期的影响,而不仅仅是更改的原始日期。 例如,main 分支上的最新提交可能会引入数周前在功能分支中进行的更改,该分支刚刚使用三向合并合并到 main 分支中。
若要了解如何将 Visual Studio 2022 与 Git 配合使用,请参阅 Visual Studio 如何使用 Git 轻松控制版本。
先决条件
| 类别 |
要求 |
| 项目访问权限 |
项目的成员。 |
| 权限 |
- 查看私有项目中的代码:至少 基本 访问权限。 - 克隆或贡献私有项目中的代码:参与者 安全组的成员或项目中的相应的权限。 - 设置分支或存储库权限: 管理 分支或存储库的权限。 - 设置分支策略、状态检查或更改默认分支:编辑存储库或分支的策略权限,或Project管理员安全组中的成员身份。 - 导入存储库: 项目管理员 安全组的成员或 Git 项目级 “创建存储库 ”权限设置为 “允许”。 有关详细信息,请参阅设置 Git 存储库权限。 |
| Services |
已启用存储库。 |
| 工具 |
可选。 使用 az repos 命令: Azure DevOps CLI。 |
| 类别 |
要求 |
| 项目访问权限 |
项目的成员。 |
| 权限 |
- 查看代码:至少 基本 访问权限。 - 克隆或贡献代码:参与者 安全组成员或具备项目中的相应权限。 |
| Services |
已启用存储库。 |
比较文件版本
如果要弄清楚特定文件更改的发生方式和时间,可能需要比较不同提交(可能在不同的分支中)中同一文件的不同版本。
Azure DevOps 团队项目站点允许你从同一分支中的提交中比较同一文件的两个版本,但不支持跨分支比较文件版本。
在 Web 浏览器中,为 Azure DevOps 组织打开团队项目。 在 “存储库 > 文件 ”视图中,选择一个文件,然后选择“ 比较 ”选项卡。
在比较选项卡中,选择包含要比较的文件版本的两个提交。 差异视图显示新增、删除或修改的文件行。
注释
通过 GitHub,可以比较不同分支中不同提交中同一文件的两个版本。 若要进行比较,请追加 /compare/<commit1>..<commit2> 到 GitHub 存储库 URL 以导航到比较页。 比较页包含每个不同文件的差异视图。 有关 GitHub 中的提交比较的详细信息,请参阅 比较提交。
Visual Studio 2022 通过使用 Git 菜单、Git 更改以及解决方案资源管理器中的上下文菜单提供 Git 版本控制体验。 Visual Studio 2019 版本 16.8 还提供 团队资源管理器 Git 用户界面。 有关详细信息,请参阅 Visual Studio 2019 - 团队资源管理器 选项卡。
Visual Studio 允许在同一分支中比较同一文件的两个版本,但不支持跨分支比较文件版本。
在 解决方案资源管理器中,选择一个文件,然后从文件的上下文菜单中选择 “Git > 视图历史记录 ”,以打开所选文件的 “Git 历史记录 ”选项卡。
在 “Git 历史记录 ”选项卡中,从提交的上下文菜单中选择“ 与上 一次比较”,以打开将所选提交与前面的提交进行比较的 差异 选项卡。
或者,选择两个提交,然后从两个提交的上下文菜单中选择 “比较” ,以打开比较两个所选提交的 差异 选项卡。
“差异”选项卡显示新的、已删除或修改的文件行。
git diff 命令可以比较不同分支中不同提交的相同文件的不同版本。
git log 命令可帮助你确定包含要比较的文件版本的提交。
使用 git log 并指定文件来列出更改文件的提交:
git log <file>
默认情况下,命令输出从当前分支的最新提交开始,然后通过每个提交元数据中的父链接,按时间倒序迭代遍历所有上级提交(不论所处分支)。
下面是命令 git log index.html的输出示例:
commit bbc3b679197b659544a6f8070c79fb535b496613
Date: Thu Jun 30 13:42:50 2021 -0400
update landing page
commit e5402fe710c25eca1b96a4e238eee9c01ed41c6a
Date: Thu Jun 30 13:42:23 2021 -0400
initial commit
使用 git diff 并指定一个文件和两个提交,以查看提交的文件版本有何不同:
git diff <commit1> <commit2> <file>
下面是命令 git diff bbc3b67 e5402fe index.html的输出示例:
- <link rel="stylesheet" href="app.cs"/>
+ <link rel="stylesheet" href="fabrikam.cs"/>
输出显示删除了一行,并添加了一行。
限制 Git 日志输出
要限制] git log 列出的提交,可以按作者、日期、消息、和更改的内容等进行筛选。 例如:
git log --author=frank@fabrikam.com index.html 仅列出指定作者的提交。
git log --since="2022-5-1" 仅列出在指定日期之后创建的提交。
git log --before="yesterday" 仅列出在指定相对日期之前创建的提交。
git log --grep="css change" 仅列出其消息中具有指定文本的提交。
git log -S"myVariable" 仅列出引入或删除指定字符串的提交。
git log -G"myVar.*" 仅列出引入或删除指定正则表达式字符串的提交。
git log -3 仅列出最后三个提交。
您有几种提交列表的 格式 选项。 例如:
git log --abbrev-commit 使用缩写 ID 列出提交(SHA-1 校验和)。
git log --oneline 以单行缩写格式列出每个提交。
git log --patch index.html 一起列出每个提交以及更改的差异。
还原文件
可以从 Git 历史记录还原文件的特定版本,即使文件在以后的提交中已编辑、删除或重命名也是如此。 还原较旧版本的文件不会创建包含更改的新提交。 若要使用还原的文件版本更新分支,需要提交更改。
Azure DevOps 团队项目站点允许您还原由特定提交所做的所有更改,但不支持仅还原提交中某个特定文件的更改。
Visual Studio 允许在同一分支中比较同一文件的两个版本,但不支持跨分支比较文件版本。
在 解决方案资源管理器中,选择一个文件,然后从文件的上下文菜单中选择 “Git > 视图历史记录 ”,以打开所选文件的 “Git 历史记录 ”选项卡。
在 “Git 历史记录 ”选项卡中,从提交的上下文菜单中选择“ 与上 一次比较”,以打开将所选提交与前面的提交进行比较的 差异 选项卡。
或者,选择两个提交,然后从两个提交的上下文菜单中选择 “比较” ,以打开比较两个所选提交的 差异 选项卡。
“差异”选项卡显示新的、已删除或修改的文件行。
Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 团队资源管理器 Git 用户界面。 若要使用 团队资源管理器,请从菜单栏中取消选中 “工具>选项>预览功能>”新增 Git 用户体验 。
在 解决方案资源管理器中,选择一个文件,然后从文件的上下文菜单中选择 “Git > 视图历史记录 ”,打开所选文件的 “Git 历史记录 ”选项卡。
在 “Git 历史记录 ”选项卡中,选择提交,然后从提交的上下文菜单中选择 “查看提交详细信息 ”,以打开 “提交详细信息 ”视图。
在 “提交详细信息 ”视图中,选择该文件,然后从文件的上下文菜单中选择 “打开 ”,以在新选项卡中打开文件的早期版本。
从菜单栏中选择 “文件 > 另存为” 以保存已还原的文件版本。
可以使用 git 签出 或 git show 命令从 Git 历史记录还原文件的特定版本。
如果指定文件和提交,git checkout 会将文件还原到以前提交的版本:
git checkout <commit> <file>
例如,git checkout 85435fac src/app.ts 会将 src/app.ts 文件恢复为提交 85435fac 中的版本。
git show 输出之前提交的文件版本的内容,可以将其重定向到输出文件:
git show <commit>:<file> > <output file>
例如,git show 85435fac:src/app.ts > /archive/oldapp.ts 将提交 85435fac 中 app.ts 的内容写入 /archive/oldapp.ts。
比较分支
可以比较任何本地或远程分支,以查看 合并 或 重新数据库生成的更改。 分支比较允许你检查合并冲突,并查看其他人的更改如何影响你的工作。
Visual Studio 2019 和早期版本不支持分支比较,因此,如果使用其中一个版本,则可以比较 Git 命令行 上的分支或使用 Web 浏览器(如果存储库托管在 Azure Repos 或 GitHub 中)。 Visual Studio 2022 支持分支比较,如 比较分支中所述。
在 Web 浏览器中,为 Azure DevOps 组织打开团队项目。 在 Repos > 分支 视图中,选择任何分支的省略号,然后选择 “比较分支 ”以打开 “分支比较 ”视图。
在 “分支比较 ”视图中,选择要比较的两个分支。 选择“ 文件 ”选项卡,查看每个已更改文件中新、已删除或修改的行的差异视图。
若要比较特定提交而非分支头提交,请选择版本选择器,然后选择 提交 选项卡。通过其 SHA 搜索并选择某个提交,即可直接在 UI 中进行提交与提交之间或分支与提交之间的比较,而无需手动构造 URL。
注释
GitHub 支持分支比较。 若要比较两个分支,请追加 /compare/<branch1>...<branch2> 到 GitHub 存储库 URL 以导航到比较页。 比较页包含每个不同文件的差异视图。 有关 GitHub 中的分支比较的详细信息,请参阅 比较分支。
若要将分支与当前分支进行比较,请右键单击存储库的 “分支 ”窗格中的分支,然后选择“比较”选项。 上下文菜单指定当前分支和目标分支的名称:
Visual Studio 2019 不支持分支比较。 但是,如果存储库托管在 Azure Repos 或 GitHub 中,则可以比较 Git 命令行 上的分支或使用 Web 浏览器。
小窍门
可以从团队资源管理器 主页 视图通过选择 Web 门户 来访问 web portal。
若要比较任何两个本地或远程分支,可以使用指定分支名称的 Git diff 命令:
git diff <branch1> <branch2>
Git 将一个分支顶端的提交与另一个分支顶端的提交进行比较。 差异输出显示两个分支中每个文件之间的删除内容和添加内容。
下面是命令 git diff users/frank/feature origin/main的输出示例,该示例将本地分支与远程分支进行比较:
index 36843b8..03afc4b 100644
--- a/tsapp/index.html
+++ b/tsapp/index.html
@@ -4,7 +4,7 @@
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
- <link rel="stylesheet" href="fabrikam-test.css" type="text/css" />
+ <link rel="stylesheet" href="fabrikam.css" type="text/css" />
<script src="app.js"></script>
</head>
...
--- a/tsapp/app.ts
+++ b/tsapp/app.ts
constructor(element: HTMLElement) {
this.element = element;
- this.element.innerHTML += "The time is: ";
+ this.element.innerHTML += "The time is now: ";
this.span = document.createElement('span');
this.element.appendChild(this.span);
this.span.innerText = new Date().toUTCString();
若要缩小与特定文件的比较范围,请在命令中 diff 指定该文件:
git diff <branch1> <branch2> <file>
例如,git diff users/frank/feature origin/main index.html 仅针对 index.html 文件生成差异。
后续步骤
相关文章