【问题标题】:How to compare two revisions in Bitbucket?如何比较 Bitbucket 中的两个修订版?
【发布时间】:2014-02-21 14:48:27
【问题描述】:

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

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

【问题讨论】:

标签: git bitbucket


【解决方案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/&lt;owner&gt;/&lt;repo&gt;/branches/compare/ 并将哈希值粘贴到下拉列表中,而不是 URL 黑客攻击!

【讨论】:

  • 这对我有用,但我需要编辑 url 以 #diff 而不是 #commits 结尾,根据之前的答案,否则它没有显示任何变化。
  • @brian.keng 你能把这个标记为正确答案吗?
【解决方案3】:

尝试类似:

https://bitbucket.org/&lt;OWNER&gt;/&lt;PROJECT&gt;/branches/compare/&lt;commit1&gt;..&lt;commit2&gt;#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/&lt;OWNER&gt;/&lt;PROJECT&gt;/branches/compare/&lt;TAG1&gt;%0D&lt;TAG2&gt;?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 您是否尝试将 切换为 我可能把它们弄混了,如果是这样,那么我会更正我的答案
  • 是的,同样的问题。事实上,截至 2016 年 11 月(本月),Atlassian 表示 Bitbucket Server 尚不支持此功能:jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550。你确定它在做你认为它在你的系统上的事情吗?
  • 我发现这适用于标签的 sudo,方法是获取每个标签的提交哈希
【解决方案6】:

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】:
      【解决方案9】:

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

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

      【讨论】:

        【解决方案10】:

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

        https://&lt;bitbucket-server&gt;/projects/&lt;PROJECT&gt;/repos/&lt;REPO&gt;/pull-requests/&lt;PR-NUM&gt;/&lt;commit-hash&gt;?since=&lt;commit-hash-older&gt;

        【讨论】:

          【解决方案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 &lt;new commit&gt; &lt;old commit&gt;

            例如:git diff 26cf60f be5f978

            【讨论】:

            • 这是在命令行上用 git 比较事物的方法;问题是如何在网站上的 Bitbucket 中做到这一点:)
            • bitbucket 没有这些功能.. 因此 cmd 行是唯一的方法..
            • 这是我发现最有用的答案。同意问题状态 bitbucket 并且这个答案确实提供了一个与 bitbucket 以及其他 git 解决方案很好地配合使用的解决方案。
            猜你喜欢
            • 2010-09-09
            • 2010-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-10
            • 2017-03-18
            • 2021-11-30
            • 1970-01-01
            相关资源
            最近更新 更多