查看历史记录
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
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 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 log 输出
要限制] 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 checkout 或 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 及更早版本不支持分支比较,因此,如果使用其中某个版本,并且存储库托管在 Azure Repos 或 GitHub 中,则可以使用 Git 命令行或 Web 浏览器比较分支。 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
文件生成差异。
后续步骤
相关文章