查看历史记录
本文内容
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
Visual Studio 2022 |Visual Studio 2019 |Visual Studio 2017 |Visual Studio 2015
Git 使用 提交元数据 (如父链接、作者详细信息和时间戳)来跟踪存储库中的更改历史记录。 可以查看 Git 历史记录,了解文件何时更改、更改了哪些文件以及进行了哪些更改。
当人们使用拉取请求 创建和合并功能分支到目标分支 时,目标分支的开发历史记录可能不是一条直线。 因此,当你查看目标分支上文件更改的历史记录时,请记住,提交顺序受 合并策略 和合并日期的影响,而不仅仅是更改的原始日期。 例如,分支上 main 的最新提交可能会引入几个星期前在仅使用三向合并合并到 main 分支的功能分支中所做的更改。
本文介绍如何执行以下操作:
若要了解如何将 Visual Studio 2022 与 Git 配合使用,请参阅 Visual Studio 如何通过 Git 轻松控制版本 。
比较文件版本
若要了解特定文件更改的发生方式和时间,可能需要比较不同提交的不同版本的同一文件(可能位于不同的分支中)。
使用 Azure DevOps 团队项目站点,可以从同一分支中的提交中比较同一文件的两个版本,但不支持跨分支比较文件版本。
在 Web 浏览器中,为 Azure DevOps 组织打开团队项目。 在 “存储库 > 文件” 视图中,选择一个文件,然后选择“ 比较 ”选项卡。
在“ 比较 ”选项卡中,选择包含要比较的文件版本的两个提交。 差异视图显示任何新的、已删除或修改的文件行。
注意
GitHub 允许你比较不同分支中不同提交中同一文件的两个版本。 若要进行比较,请追加 /compare/<commit1>..<commit2> 到 GitHub 存储库 URL 以导航到比较页。 比较页包含每个不同文件的差异视图。 有关 GitHub 中的提交比较的详细信息,请参阅 比较提交 。
Visual Studio 允许在同一分支中比较同一文件的两个版本,但不支持跨分支比较文件版本。
在 解决方案资源管理器 中,选择一个文件,然后从文件的上下文菜单中选择 “Git > 视图历史记录 ”,打开所选文件的 “Git 历史记录 ”选项卡。
在 “Git 历史记录 ”选项卡中,从提交上下文菜单中选择 “与上 一个比较”,以打开一个 差异 选项卡,该选项卡将所选提交与前面的提交进行比较。
或者,选择两个提交,然后从任一提交的上下文菜单中选择 “比较” ,以打开比较两个选定提交的 Diff 选项卡。
“差异 ”选项卡显示新的、已删除或修改的文件行。
右键单击解决方案资源管理器中的文件,然后选择 “查看历史记录...” 。将显示历史记录窗口,其中显示了跨所有分支对本地存储库中文件的所有更改的提交 ID、作者、日期和说明。
通过在提交右侧的箭头上查找分支的最新提交,查找其名称。
通过右键单击并选择 “与上一个...进行比较 ”,查看文件早期版本的更改。通过选择两个提交来查看任意两个版本之间的更改,然后右键单击并选择“ 比较...”
差异视图显示从旧提交中删除的行,并添加到新提交中。
git diff 命令可以比较不同分支中不同提交的相同文件的不同版本。 git 日志 命令可帮助你确定包含要比较的文件版本的提交。
使用 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 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 团队资源管理器 Git 用户界面。 若要使用团队资源管理器 ,请从菜单栏中取消选中“工具 >选项 >预览功能 ”新增 > Git 用户体验。 可以从任一接口互换使用 Git 功能。 如果适用,我们将提供有关如何从存储库的 Git 历史记录还原特定文件版本的并行比较。
在 解决方案资源管理器 中,选择一个文件,然后从文件的上下文菜单中选择 “Git > 视图历史记录 ”,打开所选文件的 “Git 历史记录 ”选项卡。
在 “Git 历史记录 ”选项卡中,选择提交,然后从提交上下文菜单中选择 “查看提交详细信息 ”以打开 “提交详细信息 ”视图。
在 “提交详细信息 ”视图中,选择文件,然后从文件的上下文菜单中选择 “打开 ”,以在新选项卡中打开文件的早期版本。
Visual Studio Git
Visual Studio 团队资源管理器
从菜单栏中选择 “文件 > 另存为 ”以保存已还原的文件版本。
若要检索 Visual Studio 项目中存在的文件的早期版本,请执行以下操作:
右键单击解决方案资源管理器中的文件,然后选择“ 查看历史记录 ”。 将显示 Visual Studio 历史记录 视图,其中显示了更新文件的存储库中的提交。
可以筛选提交,以使用要还原的文件版本查找确切提交。 双击版本以在 Visual Studio 中打开它。
检索在上一次提交中删除的文件的早期版本:
在团队资源管理器中打开“更改 ”视图,然后从“操作 ”下拉列表中选择“查看历史记录 ”。
右键单击包含要还原的文件版本的提交,然后选择“ 查看提交详细信息 ”。
右键单击文件以在团队资源管理器中的 提交详细信息 中还原,然后选择“ 打开 ”。
注意
检索到的文件版本不会自动保存到项目中。 若要将检索的版本保存到项目,请从“文件” 菜单中选择“另存为...” 。 如果将文件保存到当前项目中(作为新文件或覆盖现有文件),则需要提交更改以将以前的版本添加到本地分支。
可以使用 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 > 分支 ”视图中,选择任意分支的省略号,然后选择“ 比较分支 ”以打开 “分支比较 ”视图。
在 “分支比较 ”视图中,选择要比较的两个分支。 选择每个已更改文件中新、已删除或修改行的差异视图的 “文件” 选项卡。
注意
GitHub 支持分支比较。 若要比较两个分支,请追加 /compare/<branch1>...<branch2> 到 GitHub 存储库 URL 以导航到比较页。 比较页包含每个不同文件的差异视图。 有关 GitHub 中的分支比较的详细信息,请参阅 比较分支 。
Visual Studio 2019 不支持分支比较。 但是,如果存储库托管在 Azure Repos 或 GitHub 中,则可以比较 Git 命令行 上的分支或使用 Web 浏览器 。
提示
可以通过选择 Web 门户从团队资源管理器 主页 视图访问 Web 门户 。
Visual Studio 2017 和早期版本不支持分支比较。 但是,如果存储库托管在 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 文件生成差异。
后续步骤
相关文章