gitlab用于显示更改的合并请求的git命令是什么?

时间:2017-06-14 08:38:34

标签: git gitlab

Gitlabs合并请求有一个“更改”按钮,如果接受合并,则会准确显示目标分支发生的更改。

我希望能够在命令行上看到该信息,而无需创建合并请求。

2 个答案:

答案 0 :(得分:1)

我只想git diff target..proposedMerge

对于命令行目的,target和proposedMerge可以是:

  • 提交的sha1
  • 分支机构名称(在本地,如"主机"或远程,如" origin / develop"< ---不要先忘记git fetch !)
  • 分支名称的相对位置,例如master~2或HEAD ^

对于输出可视化,有各种可用于git diff的插件,如果你不喜欢默认的插件,你可以选择一个!

答案 1 :(得分:0)

GitLab 13.9(2021 年 2 月)使这一点更加清晰

<块引用>

Merge Refs 以更改合并请求

合并请求差异由 git diff target...source 计算,它将目标的 HEADtargetsource 的合并基础进行比较。这很有效,直到来自目标分支的更改合并到源分支中,从而造成完全混乱的差异。

在查看合并请求的更改选项卡时,合并请求现在默认与 <default branch> (HEAD) 进行比较
这会在您审核期间提供更准确和最新的更改差异。

参见 DocumentationEpic

特别是:

之前,如 issue 15140 中所述,它是 git diff from...to

<块引用>

我们使用 git diff from...to 而不是 git diff from to 的原因是后者包含了两个分支头之间的所有差异,这意味着对目标分支所做的任何更改( from) 在源分支 (to) 创建后,将在差异中显示为删除。

在大多数情况下,git diff from...to 正是我们想要的,但由于它使用合并基础进行比较,而不是实际提交内容,因此它不能正确处理挑选。

之后:见“Merge request diffs against the HEAD of the target branch

<块引用>

考虑以下情况,其中源分支为 feature_a,目标为 master

  • feature_a 签出新分支 master 并删除其中的 file_afile_b
  • 添加将 file_a 删除到 master 的提交。

合并请求差异仍然包含 file_a 删除,而与 master 的 HEAD 相比的实际差异只有 file_b 删除。
具有此类冗余更改的差异更难以审查。

为了显示最新的差异,在GitLab 12.9 we introduced合并请求差异与目标分支的HEAD进行比较:将目标分支人为合并到源分支,然后比较结果合并引用到源分支以计算准确的差异。