Git 有没有办法从命令行获取pull请求中的所有更改?

Git 有没有办法从命令行获取pull请求中的所有更改?,git,Git,我必须找到一种从命令行收集pull请求中所有代码差异的方法。从GithubUI我知道我可以很容易地查看差异和分支名称,但是,我必须从命令行自动化一些任务。我尝试使用git diff branch1..branch2获取PR中所有修改的文件和代码更改。但是如何从命令行中找出branch1和branch2?GitHub公开了拉取请求中的一些技术参考 对于打开的PR(我认为没有冲突),您可以获取refs/pull//mergeref以获得结果合并,然后检查它与第一个父级之间的差异: #假设“源”遥控器

我必须找到一种从命令行收集pull请求中所有代码差异的方法。从GithubUI我知道我可以很容易地查看差异和分支名称,但是,我必须从命令行自动化一些任务。我尝试使用
git diff branch1..branch2
获取PR中所有修改的文件和代码更改。但是如何从命令行中找出branch1和branch2?

GitHub公开了拉取请求中的一些技术参考

对于打开的PR(我认为没有冲突),您可以获取
refs/pull//merge
ref以获得结果合并,然后检查它与第一个父级之间的差异:

#假设“源”遥控器是包含PR的遥控器
#(而不是公关来源的分支)
git获取原点引用/pull/123/merge
git diff取头^1..取头
对于关闭的PR,此ref不再可用,但仍然存在
refs/pull//head
ref。然后,您必须查看提交图以找到合并提交(或使用一些魔术来获得子提交):

git获取原点refs/pull/123/head
MERGE\u COMMIT=$(git log--format='%H%P'--all | grep“$(git rev parse FETCH\u HEAD)\$“\124; cut-f1-d')
git diff FETCH_HEAD..${MERGE_COMMIT}
还有一种不使用git的解决方案:从GitHub API()获取差异:

curl-L-u-H“接受:应用程序/vnd.github.v3.diff”https://api.github.com/repos///pulls/
Pull请求不是Git功能。在不同的托管站点之间,获取所需内容的机制是不同的。不过,如果您正在寻找特定于GitHub的方法,GitHub现在至少通过
gh
脚本中的内容获得了半官方的支持。