在Gitlab上,如何比较两个不同提交的文件

yig*_*gal 11 git gitlab

在Gitlab上,如何比较两个不同提交的文件?我知道在命令行git上,该命令是:

git diff commit1 commit12-file_name

在gitlab上执行此操作的链接格式是什么?

看到我的相关问题

twh*_*ney 16

其他答案都没有正确的步骤来通过当前版本的 Gitlab GUI 显示两个分支之间的差异。为此:

  1. 转到您的项目
  2. 将鼠标悬停在侧面菜单中的“存储库”上,然后单击“分支”
  3. 在您要比较的分支旁边,单击右侧的“比较”按钮。
  4. 然后,如果您愿意,您可以更改目标分支master(或任何默认分支的名称)。
  5. 顶部是提交。向下滚动以查看每个修改文件的实际差异。
  6. 滚动到要比较的特定文件,然后单击以展开(如有必要)。


rob*_*beb 9

它将比较提交,您将能够在列表中找到文件。

1)转到存储库>比较
2)粘贴:https
://gitlab.com/ $ USER / $ REPO / compare?from = $ SHA1&to = $ SHA2网址3)按下Enter键(注意:gitlab将设置'Source'和'目标”正确)
4)单击“比较”按钮

  • 谢谢,但这将比较整个提交。我需要一个链接来比较两次提交之间的单个文件 (10认同)
  • @adam 尝试颠倒顺序。将较新的提交放在第一位,将较旧的提交放在第二位。(这是一个已知问题) (7认同)
  • 尝试过,但它不起作用,我得到:“没有什么可比较的。” 您需要使用不同的分支名称才能进行有效的比较。 (4认同)
  • 去列表中搜索您的文件,您可以展开并查看更改 (2认同)
  • @Adam对我来说,当您使用完整提交SHA时,它会起作用,例如:https://gitlab.com/<user>/<project>/compare/0fd28f337bd110f2fe0f8bb03bd7c95f4007cf90...4e08585433450194b073eca5f3dce57cf98124de (2认同)

ana*_*six 8

看起来比较的直接网址如下

# compare URL, where ref_source and ref_target can be commit SHA, tag, or branch
https://${gitlab_host}/${repo_path}/compare/${ref_target}...${ref_source}

# tag example 1, comparing tag v1.5.1 to master
https://${gitlab_host}/${repo_path}/compare/v1.5.1...master

# tag example 2, comparing tag v1.5.1 to tag v1.5.2
https://${gitlab_host}/${repo_path}/compare/v1.5.1...v1.5.2

# commit example 1, comparing commit SHA to master
https://${gitlab_host}/${repo_path}/compare/f6098082f...master

# commit example 2, comparing commit SHA to another commit SHA
https://${gitlab_host}/${repo_path}/compare/f6098082f...2b8daf28
Run Code Online (Sandbox Code Playgroud)

要在两次提交中比较单个文件,首先需要获取文件的 blob id,并将其附加到比较 url 后面的 octothorp ( #) ;必须找到一种方法来获得那个 id

# compare URL, where ref_source and ref_target can be commit SHA, tag, or branch, and file_blob
https://${gitlab_host}/${repo_path}/compare/${ref_target}...${ref_source}#${file_blob}
Run Code Online (Sandbox Code Playgroud)

  • 当我尝试比较两个提交时,我得到`没有任何东西可以比较。您需要使用不同的分支名称才能进行有效的比较。 (8认同)
  • 为了比较两个提交,典型的 URL 是“https://gitlab.com/myusername/myproject/-/compare/6e58206f...f6312dbc”。我四处寻找,最终 Gitlab 重写了我的尝试(用那个额外的连字符)。我有点失望的是,优秀的 Gitlab 使得在两次随机提交之间进行“git diff”变得如此困难。 (2认同)

Use*_* Me 6

您可以打开两个选项卡:

  1. 转到提交列表(在侧边栏中:)Repository -> Commits,从那里您可以方便地找到SHA任何给定的提交(右侧有复制按钮);
  2. 转到比较工具(在侧边栏:Repository -> Compare),然后在顶部的source和中target,经过SHA要比较的两个提交的字符串。


sin*_*ere 5

您首先需要获取您感兴趣的文件路径的sha1摘要(例如使用sha1sum命令)。然后,您可以构建 URL 以显示两个git ref (即分支名称或提交哈希或标签)之间的差异,如下所示:

https://gitlab.com/<project>/-/compare/<ref1>...<ref2>#<sha1>
Run Code Online (Sandbox Code Playgroud)

以下是文件名为AN/R5/L15/S2018/IDS/000/020/RUANR5L15S2018IDS20864.json的示例。它的 sha1 是f88a5e03ecc7854e8955927af33f2ea9d090ddaf

$ echo -n AN/R5/L15/S2018/IDS/000/020/RUANR5L15S2018IDS20864.json | sha1sum
f88a5e03ecc7854e8955927af33f2ea9d090ddaf
Run Code Online (Sandbox Code Playgroud)

使用以下 URL 完成878bd4f4f7edbabad3c691a7df3e317348d4ca7759e63f529a7fe5f28131dec36f253dca46b8ba9c提交之间的比较:https: //git.en-root.org/tricoteuses/data.tricoteuses.fr/Agenda_XV/-/compare/5 9e63f529a7fe5f28131dec36f253dca46b8ba9c...878bd4f4f7edbabad3c691a7df3e317348d4ca77#f88a5e03ecc7854e8955927af33f2ea9d090ddaf

该页面还将显示其他差异,而不仅仅是您感兴趣的差异。但它会将您移到文件差异开始的位置,您可以忽略其余部分。

一些 GitLab 功能请求可以让用户将来更容易发现这一点。