【问题标题】:Find parent commit of GitHub pull request查找 GitHub 拉取请求的父提交
【发布时间】:2014-08-11 10:24:25
【问题描述】:

当您提交新的拉取请求时,GitHub 会自动创建两个引用:

  • refs/pull/<number>/head 指向添加到拉取请求的最后一次提交

  • refs/pull/<number>/master 指向 GitHub 创建的提交,用于将当前主节点与当前拉取请求头合并

只有这些,如git ls-remote所示:只有head和master。

我想找到像 refs/pull/<number>/parent 这样指向此拉取请求的特定父提交的内容。

到目前为止我的解决方案:下载特殊的 URL <github>/pull/934.patch,grep 为第一个 SHA 这个文件的内容,然后使用 git 找到这个提交的父级。有没有办法在不访问网络的情况下做到这一点?

【问题讨论】:

  • 当你说“父提交”时,你是指两个分支之间的共同祖先吗?
  • 除非你的 pull request 很奇怪,否则它将是 master 的一个分支。所以通过父提交,我的意思是我想在 master 中找到这个 PR 建立在上面的提交。我想那是共同的祖先,但如果你只是说共同的祖先,那么如果 PR 一直在合并到 master 中,你也会得到一些其他的项目
  • ...对吗?我很想被证明是错误的:)
  • 嗨哈米,您实际上不应该将解决方案添加回您的问题,解决方案进入答案,或为您的问题添加评论。此外,拉取请求 are not specific to GitHub,您可以使用 Git 本身使用 git request-pull 创建拉取请求。
  • 糟糕,已删除。有趣的链接!

标签: git github


【解决方案1】:

您可以尝试使用GitHub API for PR 列出拉取请求的所有提交(而不是下载.patch)。

GET /repos/:owner/:repo/pulls/:number/commits

然后,如果您在 repo 中,您可以使用 git 获取该列表中第一个提交的父级(发起 PR 的提交)。

git log --pretty=%P -n 1 <commit>

【讨论】:

  • 是的,API 可能比补丁文件更稳定。这基本上是在做我已经在做的同样的事情——我猜(因为 PR 的概念是 Github 特有的)如果不访问网络就没有办法做到这一点。接受这个以结束我们的问题,谢谢!
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 2016-12-26
  • 2017-08-30
  • 2019-05-07
  • 2016-12-27
  • 1970-01-01
  • 2014-04-15
  • 2013-02-02
相关资源
最近更新 更多