![](/img/trans.png)
[英]How do you deal with new dependencies on an older pull request in Github?
[英]How do you recreate the GitHub pull request diff on the commandline?
在我打开拉取请求的分支上工作时,我希望看到 GitHub 在命令行上显示的完全相同的差异。 复制 GitHub 为拉取请求显示的更改列表的特定 git diff 命令是什么?
最接近的是与特征分支和基础分支之间的共同祖先不同。
就像是:
git diff `git merge-base feature-branch base-branch`
不确定是否有办法让实际的差异格式更接近 Github 风格,但$ git diff master...<branch_name>
似乎显示了拉取请求将显示的一组更改(假设它是针对master
的拉取请求) . 拉取请求中已更改文件的列表似乎等同于$ git diff --name-status master...<branch_name>
。 我想这一切都假设您的本地分支与远程 Github 分支保持同步
请参阅 GitHub 高级培训中的审查和同步部分。 特别是,在获取拉取请求后,您可以在合并之前查看差异:
$ git fetch origin refs/pull/1/head
$ git show FETCH_HEAD
假设您要检查名为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
做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.