如何比较 Bitbucket 中的两个修订版?
Posted
技术标签:
【中文标题】如何比较 Bitbucket 中的两个修订版?【英文标题】:How to compare two revisions in Bitbucket? 【发布时间】:2014-02-21 14:48:27 【问题描述】:我的团队正在将 Bitbucket 用于我们的 git 存储库,并且我们最近开始使用拉取请求功能进行代码审查。它在第一次审查时运行良好,但如果它经历了多次迭代(即进行了更改并更新了拉取请求),我希望看到一个链接,其中仅包含自上次代码审查以来所做的新更改。
我查看了“比较”功能,但 UI 看起来只能在分支之间进行比较。有没有一种简单的方法来获得两个提交之间的差异?
【问题讨论】:
介绍working with pull requests 或commit-level review bitbuckt 4.8 中的新功能 【参考方案1】:这只是对已经给出的答案的轻微修改,但在末尾添加 #diff 而不是 #commits 通常是我正在寻找的。此外,正如其他人可能提到的那样,对我来说最好的结果通常是通过将较新的提交放在第一位,将旧的提交放在第二位,但这取决于您的特定需求。
https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff
【讨论】:
我希望他们能添加一些直观的 gui 来跟踪提交修订(类似于 gerrit) 我今天尝试了这个答案,但没有成功。任何人都可以验证它在当前版本的 Bitbucket 中仍然有效吗? 我刚刚尝试了来自 tortoisehg 项目的两次提交,但它似乎仍然有效。这是一个示例链接:bitbucket.org/tortoisehg/thg/branches/compare/… 效果很好。插入owner/repo
,从提交列表中复制哈希,按回车键,然后bam。漂亮而简单的差异视图。 ?(为什么这在他们的 GUI 中并不明显......)
@NightOwl - 你在使用 Stash/bitbucket 服务器吗?如果是这样,这只适用于 bitbucket.org - jira.atlassian.com/browse/BSERV-2550【参考方案2】:
bitbucket.org 上的比较页面上的分支/标签下拉列表中的搜索字段现在支持粘贴的提交哈希。
所以现在您只需转到 https://bitbucket.org/<owner>/<repo>/branches/compare/
并将哈希值粘贴到下拉列表中,而不是 URL 黑客攻击!
【讨论】:
这对我有用,但我需要编辑 url 以 #diff 而不是 #commits 结尾,根据之前的答案,否则它没有显示任何变化。 @brian.keng 你能把这个标记为正确答案吗?【参考方案3】:尝试类似:
https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#commits
取自:https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits
【讨论】:
在 4.14 版中不起作用。当您在compare/
之后添加任何内容(包括上述内容)时,会出现死链接错误。
与bitbucket.org/site/master/issues/11657/… 中提到的其他语法相同,它只给出一个通用的 404 及其下的路径。【参考方案4】:
Bitbucket 现在支持比较标签。
https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>
【讨论】:
这给了我一个页面,但不做标签之间的差异,这是我正在寻找的 为了后代,它可以工作,但tag1
必须以“v”开头并且更新,tag2
更旧。例如,bitbucket.org/codsen/array-includes-with-glob/branches/compare/…——其他方式不起作用,没有“v”也不起作用——这两种情况都会导致 404。
成功了。 https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diff
这显示差异并忽略空格差异。【参考方案5】:
我有 Bitbucket Server,版本:v4.4.1
我的答案是这样的。
http://<path-to-my-server>/projects/<project-name>/repos/<repo-name>/commits/<old>?to=<new>
我一直在寻找这个答案,因为在我的项目中我们使用 git 子模块,而在拉取请求中,我只能看到每个更改的子模块的旧提交 sha 与新提交 sha。没有可以单击的链接或任何(我知道的)跳转到此差异视图的链接。这个 url 也允许我查看子模块中的变化。
顺便说一句,如果有人知道在拉取请求期间比较子模块中的两个提交的更好方法,请告诉我。
【讨论】:
在 Bitbucket Server v4.9.0 上,这一切对我来说都是显示第一次提交。它不比较修订版。 @Jeff 您是否尝试将Bitbucket 比较视图格式如下:
https://bitbucket.org/<owner>/<repo>/branches/compare/<new>%0D<old>
举个例子ged/ruby-pg
(RubyGem,一个红宝石库):
比较两个版本(从 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
【讨论】:
【参考方案7】:转到您的 bitbucket 存储库 > 分支
点击菜单图标并进行比较
【讨论】:
【参考方案8】:对我有用的是 https://bitbucket.org/-theusername-/-projectnamealllowercase-/branches/compare/-Leftalphanumberic_commitcode-..-Rightalphanumeric_commit-#commits
将-username-
替换为您的username
感谢@Aguardientico
【讨论】:
【参考方案9】:为要比较的提交创建一个轻量级标签。 git -a [标记名] [commit_sha]
然后在 Bitbucket 中,在比较菜单(执行拉取请求的菜单)中简单地与标签进行比较。
【讨论】:
【参考方案10】:您也可以在拉取请求中执行此操作,例如在有人推送到分支以修复审查结果之后。据我所知,目前还没有 UI,但您可以像这样输入网址:
https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>
【讨论】:
【参考方案11】:在命令提示符下
git log -p -1
这显示了与以前版本的比较。
git log -p -5
这显示了最近 5 次修订,比较了两个连续的版本(n 和 n-1、n-1 和 n-2 等)。
我意识到,这并不适合显示两个特定版本之间的直接差异。
参考。 https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
【讨论】:
【参考方案12】:通过终端,在你的项目路径上运行 git:
git diff <new commit> <old commit>
例如:git diff 26cf60f be5f978
【讨论】:
这是在命令行上用 git 比较事物的方法;问题是如何在网站上的 Bitbucket 中做到这一点:) bitbucket 没有这些功能.. 因此 cmd 行是唯一的方法.. 这是我发现最有用的答案。同意问题状态 bitbucket 并且这个答案确实提供了一个与 bitbucket 以及其他 git 解决方案很好地配合使用的解决方案。以上是关于如何比较 Bitbucket 中的两个修订版?的主要内容,如果未能解决你的问题,请参考以下文章
markdown [BitBucket比较提交]比较BitBucket提交#bitbucket #commits #compare