如何在BitBucket中比较两个提交?

100

我试图在BitBucket上比较同一分支(此处为主分支)上的两个提交记录,但在任何论坛中都没有找到好的答案,因此决定尝试他们的客户端SourceTree,看看是否可以在本地安装它有所帮助,结果确实如此。

因此,我认为将问题和答案添加到这里可能会有用。

8个回答

104

BitBucket云 (bitbucket.org) 支持在 分支比较 页面上进行提交比较:

  1. 导航至存储库
  2. 点击左侧导航栏的 '+' 菜单
  3. 点击 '比较分支和标签'
  4. 将您的提交哈希值粘贴到分支/标签下拉列表中的搜索字段中
  5. 点击 '比较'

9
谢谢!我不知道这个选项。然而,在同一个分支(master)上的两个提交中,它对我不起作用 - 不确定为什么。 - ng10
2
即使这样做起作用了(没有可点击的“比较”按钮,单击“diff”会显示“没有更改”),但在任何提交页面上提供下拉选项与任何其他提交进行比较会更好得多。 - Bob Stein
1
我们使用的是v5.15.1版本,我无法完成第四步,因为添加短哈希或长哈希都无法找到任何内容。 - Lukas Salich
10
我完全同意BobStein所说的,即在这种特定情况下,Bitbucket的用户体验很糟糕,但我不明白为什么Alastair Wilkes要对此负责(除非他实施了它-如果是这种情况...可惜啊... 即使命令行的"git diff c1 c2"也能比提交做得更好)。我们应该投票支持答案而不是Bitbucket的实现。因此,我认为负一票是不应该的(加一票来“过度”补偿)。 - zozo
4
当前的用户界面中不存在。请参考joseluisbz的答案获取解决方案。 - cdauth
显示剩余6条评论

54

这个URL对我有效: https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#diff, 也可以使用短哈希值。

截图:

输入图像描述


1
在2020年4月,使用Web界面时,只要按正确顺序提交提交记录(我使用了完整的SHA码,但短码也可能有效),这个方法就可以运行。 - glaucon
2
针对 @glaucon 的评论进行澄清... 在所建议的答案中,<commit1> 和 <commit2> 分别表示目标 - Heraldmonkey
2
这只是说明没有更改。可能是因为它无法处理在同一分支上比较两个提交。 - Alan Macdonald
@AlanMacdonald 刚刚在一个分支的附近提交中重新测试了一下:运行良好。已更新答案并附上截图。 - kambala
8
我在Bitbucket上发现了一个缺陷。如果你错误地排列分支,你将看不到差异,但重要的是UI有一个交换顺序的图标。当你按下它时,它会可见地更改提交ID的顺序,但不会显示任何差异。然而,如果你手动编辑URL参数以交换顺序,差异就会显示出来。 - Alan Macdonald
1
谢谢@AlanMacdonald的最终澄清!“switch commits”(箭头)UI控件对我也不起作用!而且,让新提交先行才能确定提交顺序非常不直观。 - M.Bearden

15

在寻找一种比较两个不同提交版本下单个文件的方法时,我遇到了这个问题。执行该操作的步骤与上面的步骤略有不同,因此我想分享一下:

  1. 在“源”视图中浏览要比较的文件
  2. 下拉文件的视图选项并选择“Diff”:

'Diff' view option

  1. 一旦文件的差异加载完毕,下拉历史选项并选择要在其中进行比较的提交版本:

Select commits to compare


1
此比较显示了如果为给定的修订版本创建PR将产生的“暂定合并”。即它显示了从合并基础到源之间的差异,而不是源和目标之间的差异。 - joki

15

我在BitBucket的Web界面上发现了这个功能。

箭头指向Web UI上的BitBucket Compare功能

操作说明:

  1. 点击左侧工具栏上的圆圈图标(“Compare”按钮)。
  2. 输入“源”和“目标”,也就是要比较的两个提交。在右侧,通过单击文本框上的“分支”,“标签”或“提交”来选择要搜索的内容。(您可以用不同的选项来查找源和目标,例如通过标签搜索一个而通过提交哈希搜索另一个。)

这是一个重要的功能,因为它可以提供一个您可以与他人共享的URL。

更新:其他用户评论说这显示了合并结果的差异,所以它的使用方式与git diff不完全相同。我将尝试在有机会进行实验时进行更新。我不再每天使用BitBucket了。


谢谢!我也发现了这个问题,只是我的用户界面显示有些不同。 - ng10
2
是的,但是与相同提交的 git diff 相比,此比较显示完全不同的信息! - socketpair
2
此比较显示了如果为给定的修订版本创建PR将产生的“暂定合并”。即它显示了从合并基础到源之间的差异,而不是源和目标之间的差异。 - joki

10
在左侧窗格中选择,然后在三个点中选择比较分支或标签选项。

enter image description here

在执行操作之前,先移动到分支,然后分别选择分支/标签

enter image description here


3
这是唯一能够与当前的Bitbucket UI兼容的解决方案。 - cdauth
1
截至2023年1月30日,此内容为真。 - Ed Graham

9
我当时发现解决这个问题的最佳方式是通过 SourceTree app(在我的情况下是Mac)。它会自动显示最新的更改,如果您愿意,还可以比较特定的提交。

我觉得我应该在这里添加一下,因为我没有在任何地方找到一个好的答案。See screenshot showing this functionality

更新,2020年6月29日:基于reed_do_it和scott-carpenter的答案,去检查了一下,发现BitBucket现在在网站UI上有了这个功能。我在网站上看到的版本,至少对我来说,就是scott上面展示的那个。

这是我看到的UI:

  1. 在Bitbucket网站上,进入您拥有的任何仓库 bitbucket repos
  2. 选择其中一个并单击要比较的文件 select a file in the repo
  3. 单击源列表框并选择“比较” enter image description here
  4. 选择要比较的版本 diff 如reed_do_it所说,URL会随着您的选择而更改,因此您可以将链接发送给其他人,如果他们可以访问该仓库,则也可以查看它

6
@kambala的解决方案是正确的,但需要进行简单的更改。URL将被编码,所以无法简单地使用“...”。
这个URL会起作用:
https://bitbucket.org///branches/compare/%0D

1
我在Bitbucket v5.9.0中是这样做的。
  1. 对你想要比较的2个提交设置标签(希望你有权限)
  2. 在左侧栏中选择“拉取请求”
  3. 按右上角的“创建拉取请求”按钮
  4. 现在你可以选择“from”和“to”标签。不要生成拉取请求,只需比较“差异”
我不知道为什么这个非常基本的功能不能直接使用而必须使用一些“技巧”。

Bitbucket已经有一个独立的“比较”视图一段时间了,您不需要使用拉取请求创建页面。 - avigil
使用标签目前(而且可悲的是)我认为是最好的选择。 - Vincent Pazeller

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