在我正在打开的拉取请求分支上工作时,我希望能够看到与GitHub显示相同的差异。哪个git diff命令可以复制GitHub为拉取请求显示的更改列表?
在我正在打开的拉取请求分支上工作时,我希望能够看到与GitHub显示相同的差异。哪个git diff命令可以复制GitHub为拉取请求显示的更改列表?
git diff `git merge-base feature-branch base-branch`
不确定是否有一种方法可以使实际差异格式更接近Github样式,但是$ git diff master...<branch_name>
似乎显示的是一组更改,这些更改与拉取请求相同(假设它是针对master
的拉取请求)。拉取请求中更改文件的列表似乎等同于$ git diff --name-status master...<branch_name>
。我想这都假定您的本地分支与远程Github分支保持最新。
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
不会给我相同的输出。它们会给出在特性分支和主分支之间发生变化的每个文件,即如果在创建分支后合并到 master
的其他提交也会被列出。 - ashgromniesgit diff $(git merge-base master HEAD)
代替它。我应该更新一下这个答案,如果它管用,请告诉我。 - stason$ git fetch origin refs/pull/1/head
$ git show FETCH_HEAD
git diff ...master + flags
。 - Jacob Dalton