在我打开拉取请求的分支上工作时,我希望看到GitHub在命令行上显示的完全相同的差异。什么是特定的git diff命令复制GitHub为拉取请求显示的更改列表?
答案 0 :(得分:7)
最接近的是在功能分支和基本分支之间使用共同祖先进行差异化。
类似的东西:
git diff `git merge-base feature-branch base-branch`
答案 1 :(得分:4)
答案 2 :(得分:0)
请参阅GitHub高级培训中的Reviewing and Synchronising部分。特别是,在获取拉取请求之后,您可以在合并之前查看差异:
$ git fetch origin refs/pull/1/head
$ git show FETCH_HEAD
答案 3 :(得分:0)
不确定是否有办法让实际的diff格式更接近Github样式,但$ git diff master...<branch_name>
似乎显示了pull请求将显示的一组更改(假设它是针对{{1}的拉取请求})。拉取请求中已更改文件的列表似乎等同于master
。我想这一切都假设您的本地分支机构与远程Github分支机构是最新的
答案 4 :(得分:0)
假设您要检查名为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
无法做到的。
答案 5 :(得分:-1)
git diff branchA branchB
应该有效,不是吗?
关于其他可能有用的diff notations can be found here
的更多信息