Azure DevOps-如何在Web界面中比较两个提交?

108
这肯定是我忽略了的简单问题。在 Azure DevOps 网页界面(不是作为 IDE 的一部分集成),我知道如何将任何提交与其父项进行比较,但我无法弄清楚如何将其与任意提交进行比较。
也就是说,我正在寻找与 GitHub 的 compare/hash1..hash2 功能相当的功能。
吸引人的地方在于 Web UI 是一个对所有人都普遍可见的视图/工具,我可以获得与同事分享的特定差异的链接。
Web UI 暗示可能有可能实现,因为在查看特定提交的更改时,它会显示文本 Diff to Parent 1 - <我的提交哈希>,但我还没有弄清楚如何更改 Parent 1

1
同意 - 微软的用户界面,每次都是这样...唉 - sledgeweight
5个回答

177
如果您前往存储库的分支列表,可以单击其中一个分支的“...”(更多操作),然后选择“比较分支”。
这将带您转到以下格式的 URL: https://dev.azure.com/{organisation}/{project}/_git/{repository}/branches?baseVersion=GB{baseBranch}&targetVersion=GB{targetBranch}&_a=files 然后,您可以更改查询字符串中的baseVersiontargetVersion参数。这些可以采用以下形式,并且可以混合使用:
  • GB{branchName}
  • GC{commitHash}
  • GT{tagName}
如果链接失效,单击拉取请求上的“查看合并更改”将带您到相同的页面,但 URL 稍微有所不同:https://dev.azure.com/{organisation}/{project}/_git/{repository}/branchCompare?baseVersion=GC{baseCommit}&targetVersion=GC{targetCommit}&_a=files 我不确定是否有更好的方法从 UI 比较提交,因为它只显示分支和标签,但如果您以此方式进行操作,则无需暂时标记提交或创建临时分支,即可获取显示所有已更改文件的差异。

13
只想补充一句话,如果您在URL中将提交信息弄反了,它只会告诉您这两个提交之间没有变化(而不是出现错误消息或其他内容)。尝试交换它们的顺序。 - vaindil
7
好的!可惜他们没有更简单的方法来做这件事。 - Aaron Hudon
3
这正是我正在寻找的。谢谢分享。 - sunil
然后点击“文件”选项卡以查看已标记适当的已添加和已删除行的更改文件。 - Silver Sagely

35

如果您想比较一个文件的两个任意提交版本,请导航到存储库中的该文件,选择比较选项卡,并应用适当的提交范围。

enter image description here

如果你想比较任意两个提交版本的所有文件,你可以在这些提交版本上创建标签,然后进行比较。这将给出它们之间的提交版本列表,并允许你展示差异。

enter image description here

enter image description here

enter image description here

enter image description here

关于详细信息,您可以参考此案例


1
谢谢Hugh!创建标签不是我的首选,但在紧急情况下肯定有效。 - orion elenzil
1
绝对惊人的答案! - Pedro Alvares
这个答案很棒,应该标记为“答案”。这是如何从用户界面比较任意提交的方法。 - SQL Police
新建分支...从“历史记录”中也可以比较任意提交(在这种情况下是分支)。也就是说,创建一个短暂的分支,您可以随后进行比较和删除。当然,您可能更喜欢使用标签...喜欢它自动命名分支(包括提交哈希),但对于标签也是如此...因此可能没有特别的优势。 - Janis Veinbergs

12
Devops UI现在允许比较分支和文件之间的提交。URL与George Heylar's answer中详细说明的URL非常相似,您只需将URL的结尾从'files'更改为'commits'即可。

https://dev.azure.com/{organisation}/{project}/_git/{repository}/branches?baseVersion=GB{baseBranch}&targetVersion=GB{targetBranch}&_a=commits

如果“比较分支”未被禁用,则可以通过UI快速完成以下操作:

如果“比较分支”未被禁用,则可以通过UI快速完成以下操作:

  1. 打开项目的分支列表:

Azure DevOps Branch list

点击您想要比较的第一个分支旁边的垂直省略号按钮:

Branch row options list

  1. 选择“比较分支”以打开下面的屏幕。如果“比较分支”选项被禁用,请参阅下面的更长方法。

Top of the Branch compare page

  1. 在第二个组合框中选择要进行比较的分支,然后您将看到两个分支之间提交差异的列表:

Branch compare page showing commit differences between master branch and a release branch

如果您想查看文件差异,只需在不是非常明显的选项卡控件中选择“文件”选项:

Compare Commits or Files tab

如果“比较分支”被禁用,通过UI实现这个目标的方法比较繁琐。
  1. 打开您项目的分支列表:

Azure DevOps Branch list

点击第一个要比较的分支旁边的竖向省略号按钮:

Branch row options list

  1. 选择“设为默认分支”

  2. 对于您想要进行比较的第二个分支,重复相同的过程:

Branch row options list

  1. 这次选择“设置为比较分支”

  2. 最后再次打开省略号菜单,找到你在步骤3中选择的作为默认分支的那个分支

Branch ellipsis menu when default and compare branches have been selected

  1. 选择“比较分支”菜单项,这将打开“分支比较”页面:

Branch compare page


1
太好了。虽然这个问题实际上是关于提交与分支的区别,但我还是会将George Haylar的答案选为最佳答案。非常感谢你指出这一点。我会经常使用它。 - orion elenzil
2
虽然这与我的答案非常相似,但实际上它只允许您比较分支或标签,而不是任意提交(不更改我所描述的URL),您不应该因此更改默认分支。默认分支是例如 mastermain,它是全库设置,而不是个人设置。您可以更改“比较分支”,然后在另一个分支上“比较分支”,但同样这并不能让您比较任意提交,而且让您的默认分支保持原样并在比较页面上更改它们也同样容易。 - George Helyar

1
“Diff to Parent 1”功能在“提交详情/提交包含的更改是什么?”中描述。

https://learn.microsoft.com/en-us/azure/devops/repos/git/_img/commit-details/10difftoparent.png?view=azure-devops

与父提交的差异 - 在源资源管理器窗格中,单击父提交1的差异以查看当前提交与其父提交之间的差异。

在差异视图本身中可以看到Parent1引用了什么:

https://learn.microsoft.com/en-us/azure/devops/repos/git/_img/commit-details/11sidebyside.png?view=azure-devops

但我没有看到任何能够帮助引用该差异的网页链接。因此,我最初提出了Azure DevOps Git API这个建议


所以,没有答案可以回答https://stackoverflow.com/questions/61059102/azure-devops-api-sdk-is-there-a-route-to-get-pull-request-difference-in-detail吗? - FDM
@FDM 我确实不知道有没有。让我们看看是否有人能回答你的问题。 - VonC
我曾经尝试手动调用提到的路由进行HTTP调用,但是从API SDK中正确获取文件路径和提交ID几乎是不可能的。我现在放弃它了,除非有人有一个黄金提示。但我并不抱有太大希望。 :) - FDM

0

简单...

如果您想比较一个分支的两个提交...

  1. 转到分支。
  2. 从您想要进行比较的分支创建一个新的分支。
  3. 使用特定的提交创建分支。 输入图像描述
  4. 将新创建的分支与原始分支进行比较。

谢谢这个主意,但我不太喜欢修改仓库来检查它。 - undefined
其他答案已经涵盖了创建临时分支(或标签)以允许比较提交的想法 - 或许更好的建议是在其他答案中提出编辑建议(一旦您获得适当的权限)? - undefined
................ - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接