如何在Bitbucket中比较两个版本?

137

我们的团队正在使用Bitbucket作为git仓库,最近开始使用拉取请求功能进行代码审查。第一次审查很好用,但如果需要多次迭代(也就是说,做出更改并更新拉取请求),我希望能够看到一个链接,只显示自上次代码审查以来所做的新更改。

我研究了“比较”功能,但UI似乎只能在分支之间进行比较。有没有一种简单的方法来获取两个提交之间的差异?


介绍如何使用拉取请求或提交级别审查,这是Bitbucket 4.8中的新功能。 - surfmuggle
12个回答

106

这只是对已给出答案的轻微修改,但通常我要添加#diff而不是#commits。 此外,正如其他人可能已经提到的那样,对我来说最好的结果通常是将更新的提交放在第一位,较旧的提交放在第二位,但这取决于您的特定需求。

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff

2
我希望他们能够添加一些直观的 GUI 来跟踪提交修订(类似于 Gerrit)。 - dolbi
1
我今天尝试了这个答案,但不成功。有人可以验证一下在当前的Bitbucket版本中它是否仍然有效吗? - Martin Stålberg
我刚刚尝试使用Tortoisehg项目的两个提交,它仍然可以工作。这里是一个示例链接:https://bitbucket.org/tortoisehg/thg/branches/compare/5b660cc..3e1da5d#diff - Night Owl
1
工作得很好。插入了 owner/repo,从提交列表中复制哈希值,按下回车,就完成了。漂亮简单的差异视图。(然而为什么这在他们的 GUI 中不是一个显而易见的事情...) - Svish
2
@NightOwl - 你在使用Stash/bitbucket服务器吗?如果是的话,这只适用于bitbucket.org - https://jira.atlassian.com/browse/BSERV-2550 - Cinderhaze

37

现在,位于bitbucket.org上“比较页面”的分支/标签下拉菜单中的搜索字段已支持粘贴提交哈希值。

现在,您只需访问https://bitbucket.org/<owner>/<repo>/branches/compare/并将哈希值粘贴到下拉菜单中,而不是使用URL操作!

drop down, then paste in commit hash


这对我有用,但我需要编辑URL以“#diff”结尾,而不是“#commits”,按照早期答案,否则它将不显示任何更改。 - MikeA
@brian.keng 你能把这个标记为正确答案吗? - Ahmed Hasn.

26

Bitbucket现在支持比较标签。

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>

1
这给了我一个页面,但没有在TAGS之间进行差异比较,这正是我想要的。 - tristanbailey
4
为了后人,这样做可以起作用,但 tag1 必须以字母 "v" 开头,并且要更新,tag2 是较旧的。例如,https://bitbucket.org/codsen/array-includes-with-glob/branches/compare/v2.3.6%0Dv2.3.5 — 如果反过来则不会起作用,没有 "v" 也不会起作用 — 这两种情况都将导致 404。 - revelt
搞定了。https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diff 这将显示差异并忽略空格差异。 - Damodar Bashyal

26

1
在4.14版本中无法工作。当您添加任何东西到“compare/”之后,包括上面的内容,会出现“Dead Link”错误。 - Juha Untinen
与https://bitbucket.org/site/master/issues/11657/allow-commit-ids-to-be-used-in-compare中提到的其他语法相同,它只会给出一个通用的404和其下的路径。 - Juha Untinen

11

我有一个版本为v4.4.1的Bitbucket服务器。

我手头上的答案是这个。

http://<path-to-my-server>/projects/<project-name>/repos/<repo-name>/commits/<old>?to=<new>

我正在寻找这个答案,因为在我的项目中我们使用git子模块,在拉取请求中,我只能看到每个更改的子模块的旧提交sha与新提交sha之间的差异。没有可以点击的链接或其他任何东西(据我所知)跳转到此diff视图。这个url允许我查看子模块中发生了什么变化。

顺便说一句,如果有人知道在拉取请求期间比较两个子模块提交的更好方法,请让我知道。


13
在Bitbucket Server v4.9.0上,这对我来说只显示第一个提交,而没有比较修订版本。 - Jeff
@Jeff,你试过将<old>换成<new>吗?我可能把它们搞混了,如果是这样,那么我会更正我的答案。 - santiago arizti
1
是的,同样的问题。事实上,截至2016年11月(本月),Atlassian表示Bitbucket Server尚不支持此功能:https://jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550。您确定它在您的系统上执行了您认为它执行的操作吗? - Jeff
我发现这个方法可以用于标签的sudo,它通过获取每个标签的提交哈希来实现。 - tristanbailey

6

5

前往您的Bitbucket仓库 > 分支 这里输入图片描述

点击菜单图标和比较选项


1
您也可以在拉取请求中实现此操作,例如在某人推送分支以修复审查结果后。据我所知,目前还没有相应的用户界面,但您可以像这样输入URL:https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>

0

创建一个轻量级标签来比较你想要比较的提交。 git -a [标签名称] [提交SHA]

然后在Bitbucket中,在比较菜单中(用于执行拉取请求的菜单)与标签进行比较即可。



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