如何比较Bitbucket中的两个修订?


126

我的团队正在将Bitbucket用于我们的git存储库,并且我们最近开始使用提取请求功能进行代码审查。它在第一次审阅时工作正常,但是如果经历多次迭代(即进行了更改并更新了拉取请求),我希望看到一个链接,其中包含自上次代码审阅以来所做的新更改。

我研究了“比较”功能,但UI看起来只能在分支之间进行比较。有没有一种简单的方法来获得两次提交之间的区别?


介绍使用拉取请求提交级别审阅 bitbuckt 4.8中的一项新功能
surfmuggle 2016年

Answers:


99

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

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

2
我希望他们会添加一些直观的GUI来跟踪提交修订(类似于gerrit)
dolbi

1
我今天尝试了这个答案,但没有成功。谁能验证它在当前版本的Bitbucket上仍然有效?
MartinStålberg'17

我只是通过tortoisehg项目的两次提交尝试了此操作,但它似乎仍然有效。下面是一个例子链接:bitbucket.org/tortoisehg/thg/branches/compare/...
猫头鹰

1
很棒。插入owner/repo,从提交列表中复制哈希,然后按Enter键和bam。尼斯和容易的差异视图。👍(为什么这在他们的GUI中不是显而易见的事情...)
Svish

1
@NightOwl-您正在使用Stash / bitbucket服务器吗?如果是这样,则只能在bitbucket.org上使用-jira.atlassian.com/browse/BSERV-2550
Cinderhaze

25

尝试类似的方法:

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#commits

摘自:https : //bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits


1
在版本4.14中不起作用。在添加compare/上述内容后添加任何内容时,将出现Dead Link错误。
Juha Untinen

bitbucket.org/site/master/issues/11657/…中提到的其他语法相同,后者仅提供了通用404及其下的路径。
Juha Untinen

25

Bitbucket现在支持比较标签。

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

1
这给了我一个页面,但没有在标记之间进行区别,这就是我想要的
tristanbailey

4
对于后代,它可以工作,但tag1必须以“ v”开头,并且较新,tag2较旧。例如,bitbucket.org
codsen / array

做到了。https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diff这显示了差异并且忽略了空格差异。
Damodar Bashyal

25

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

因此,现在您可以直接https://bitbucket.org/<owner>/<repo>/branches/compare/将哈希值粘贴到下拉列表中,而不用进行URL黑客攻击!

下拉,然后粘贴提交哈希


这对我有用,但是按照前面的答案,我需要编辑URL以#diff而不是#commits结尾,否则它没有任何变化。
MikeA

@ brian.keng您可以将此标记为正确答案吗?
艾哈迈德·哈森。

10

我有Bitbucket服务器,版本:v4.4.1

我的答案是这样。

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

我一直在寻找这个答案,因为在我的项目中,我们使用git子模块,而在pull请求中,我只能看到每个更改的子模块的旧提交和新提交。没有单击链接或任何(我知道)的链接可以跳转到该差异视图。该URL还允许我查看子模块中的更改。

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


13
在Bitbucket Server v4.9.0上为我所做的所有事情,都显示了第一次提交。它不比较修订。
杰夫

@Jeff是否尝试将<old>切换为<new>,我可能已经将它们混合了,如果是这样,那么我将纠正我的答案
santiago arizti

1
是的,同样的问题。实际上,截至2016年11月(本月),Atlassian表示Bitbucket Server尚不支持此功能:jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550。您确定它正在执行您认为在系统上的工作吗?
杰夫

我发现此方法适用于标签的sudo,方法是获取每个标签的提交哈希值
tristanbailey

5

Bitbucket比较视图格式如下:

https://bitbucket.org/<owner>/<repo>/branches/compare/<new>%0D<old>

给出一个示例ged/ruby-pg(RubyGem,ruby库):

比较两个版本(从v0.18.1到v0.18.2)

https://bitbucket.org/ged/ruby-pg/branches/compare/v0.18.2%0Dv0.18.1

比较两个修订版(从f97dd6c到22a3612)

https://bitbucket.org/ged/ruby-pg/branches/compare/22a361201fd1d387d59a066b179124694a446f38%0Df97dd6cb4f34da6a62c4339887249115c7c25b9c




0

为您要比较的提交创建一个light标签。git -a [标记名] [commit_sha]

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


0

您也可以在拉取请求中执行此操作,例如在有人向分支机构推送以修复审阅结果之后。据我所知,目前还没有UI,但是您可以输入如下网址:

https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>



-4

通过终端,在项目路径上运行git:

git diff <new commit> <old commit>

例如: git diff 26cf60f be5f978


2
这是在命令行上用git比较事物的方法。问题是如何在Bitbucket网站上进行操作:)
Mark VY

bitbucket不具有这些功能..因此,cmd行是唯一的方法..
Siddharth

这是我发现最有用的答案。同意该问题指出bitbucket,此答案确实提供了一个与bitbucket以及其他git解决方案都很好地结合使用的解决方案。
ptsw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.