Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
Git 使用 提交元数据 (如父链接、作者详细信息和时间戳)来跟踪存储库中更改的历史记录。 可以查看 Git 历史记录,了解文件何时更改、更改了哪些文件和进行了哪些更改。
当人们使用拉取请求创建和合并功能分支到目标分支时,目标分支的开发历史记录可能不是一条直线。 因此,当你查看目标分支上文件更改的历史记录时,请记住,提交顺序受 合并策略 和合并日期的影响,而不仅仅是更改的原始日期。 例如,分支上 main 的最新提交可能会引入几个星期前在功能分支中所做的更改,该更改仅使用三向合并合并合并到 main 分支中。
若要了解如何将 Visual Studio 2022 与 Git 配合使用,请参阅 Visual Studio 如何使用 Git 轻松控制版本。
先决条件
| 类别 |
要求 |
|
项目访问权限 |
项目的成员。 |
|
权限 |
- 查看专用项目中的代码:至少 是基本 访问权限。 - 克隆或参与专用项目中的代码: 参与者 安全组的成员或项目中的相应权限。 - 设置分支或存储库权限: 管理 分支或存储库的权限。 - 更改默认分支: 编辑存储库的策略 权限。 - 导入存储库: 项目管理员 安全组的成员或 Git 项目级 “创建存储库 ”权限设置为 “允许”。 有关详细信息,请参阅设置 Git 存储库权限。 |
|
Services |
已启用存储库。 |
|
工具 |
可选。 使用 az repos 命令: Azure DevOps CLI。 |
注释
在公共项目中,具有 利益干系人 访问权限的用户具有对 Azure Repos 的完全访问权限,包括查看、克隆和参与代码。
| 类别 |
要求 |
|
项目访问权限 |
项目的成员。 |
|
权限 |
- 查看代码:至少 基本 访问权限。 - 克隆或参与代码: 参与者 安全组的成员或项目中的相应权限。 |
|
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将提交app.ts内容85435fac写入到 /archive/oldapp.ts。
比较分支
可以比较任何本地或远程分支,以查看 合并 或 重新数据库生成的更改。 分支比较允许你检查合并冲突,并查看其他人的更改如何影响你的工作。
Visual Studio 2019 和早期版本不支持分支比较,因此,如果使用其中一个版本,则可以比较 Git 命令行 上的分支或使用 Web 浏览器(如果存储库托管在 Azure Repos 或 GitHub 中)。 Visual Studio 2022 支持分支比较,如 比较分支中所述。
在 Web 浏览器中,为 Azure DevOps 组织打开团队项目。 在 Repos > 分支 视图中,选择任何分支的省略号,然后选择 “比较分支 ”以打开 “分支比较 ”视图。
在 “分支比较 ”视图中,选择要比较的两个分支。 选择“ 文件 ”选项卡,查看每个已更改文件中新、已删除或修改的行的差异视图。
注释
GitHub 支持分支比较。 若要比较两个分支,请追加 /compare/<branch1>...<branch2> 到 GitHub 存储库 URL 以导航到比较页。 比较页包含不同文件的差异视图。 有关 GitHub 中的分支比较的详细信息,请参阅 比较分支。
若要将分支与当前分支进行比较,请右键单击存储库的 “分支 ”窗格中的分支,然后选择“比较”选项。 上下文菜单指定当前分支和目标分支的名称:
Visual Studio 2019 不支持分支比较。 但是,如果存储库托管在 Azure Repos 或 GitHub 中,则可以比较 Git 命令行 上的分支或使用 Web 浏览器。
小窍门
可以通过选择 Web 门户从团队资源管理器 主页 视图访问 Web 门户。
若要比较任何两个本地或远程分支,可以使用指定分支名称的 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 文件生成差异。
后续步骤
相关文章