【问题标题】:How do you recreate the GitHub pull request diff on the commandline?您如何在命令行上重新创建 GitHub 拉取请求差异?
【发布时间】:2014-11-22 15:24:59
【问题描述】:

在我打开拉取请求的分支上工作时,我希望看到 GitHub 在命令行上显示的完全相同的差异。复制 GitHub 为拉取请求显示的更改列表的特定 git diff 命令是什么?

【问题讨论】:

标签: git github pull-request


【解决方案1】:

最接近的方法是区分特征分支和基本分支之间的共同祖先。

类似:

git diff `git merge-base feature-branch base-branch`

【讨论】:

  • 图片:我的错误没有 RTFM 并且命令表明它可以进行合并
【解决方案2】:

如果您不想执行任何 git fetch 和更新本地 PR 分支,您只需使用 GitHub 的命令行界面 cli/cli

release 0.9.0 包括 gh pr diff

【讨论】:

  • 历时6年,终于有一个完全令人满意的答案。
【解决方案3】:

不确定是否有办法让实际的差异格式更接近 Github 风格,但 $ git diff master...<branch_name> 似乎显示了拉取请求将显示的一组更改(假设它是针对 master 的拉取请求)。拉取请求中更改的文件列表似乎等同于$ git diff --name-status master...<branch_name>。我想这一切都假设您的本地分支与远程 Github 分支是最新的

【讨论】:

    【解决方案4】:

    请参阅 GitHub 高级培训中的 Reviewing and Synchronising 部分。特别是,在获取拉取请求后,您可以在合并之前查看差异:

    $ git fetch origin refs/pull/1/head
    $ git show FETCH_HEAD
    

    【讨论】:

    • 有没有办法在不拉下裁判的情况下做到这一点?这似乎是工作流程/烦恼。我宁愿完全使用 git 命令行来使用一组命令,而无需获取 GitHub 创建的额外引用。喜欢git diff ...master + flags
    【解决方案5】:

    假设您要检查名为 master 的基本分支:

    git diff $(git merge-base --fork-point master)
    

    这将给出分支创建后的所有更改,包括尚未提交的更改!

    此命令给出的结果与@pic 的答案中的结果相同,但它更简单一些,因为它不需要知道特征分支。

    如果您只想要提交的更改,类似于@VonC 的答案中的gh pr diff 命令,以下命令将给出相同的结果:

    git diff $(git merge-base --fork-point master) HEAD
    

    git diff 方式方法在某些情况下可能更有用,因为您可以使用所有其他 git diff 功能。例如,如果您不想要差异,而是想知道修改了哪些文件,您可以传递 --name-only:

    git diff --name-only $(git merge-base --fork-point master)
    

    gh 无法做到这一点。

    【讨论】:

    • 这些命令给我的输出与gh pr diff不同。他们给了我在 feature 分支和 master 分支之间更改的每个文件,即,如果自创建 fork 以来有其他合并到 master,它们也会被列出
    • 对,自从我第一次写它以来,我也发现了这个问题。试试:git diff $(git merge-base master HEAD)。我可能应该更新这个答案。让我知道它是否有效。
    【解决方案6】:

    git diff branchA branchB 应该可以,不是吗?

    更多关于其他可能有用的信息diff notations can be found here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2015-10-17
      • 2020-07-22
      • 1970-01-01
      • 2019-12-08
      • 2012-01-11
      • 2020-09-17
      相关资源
      最近更新 更多