在Github上找到最初创建提交的Pull请求

时间:2013-07-23 18:28:20

标签: git github pull-request

Pull请求非常适合理解围绕对repo所做的更改或一组更改的更大思考。读取拉取请求是快速“理解”项目的一种好方法,因为您可以获得更大的逻辑更改分组,而不是对源进行小的原子更改。类似于将代码中的行组织成相关的“节”,以便于阅读。

我发现自己正在查看文件或提交,我想知道是否有办法将提交回溯到最初创建它的Pull Request。 Pull Request最终会被合并,但不一定是合并提交。

6 个答案:

答案 0 :(得分:182)

您可以转到github并在搜索栏中输入SHA,确保选择左侧的“问题”链接。

2017年7月13日更新

通过Github UI,现在有一种非常简单的方法可以做到这一点。如果您正在查看UI中分支的提交列表中的提交,请单击提交本身的链接。如果该提交有PR并且没有直接添加到分支,则PR列出PR编号及其分支的PR的链接将直接位于页面顶部的提交消息下。 enter image description here


Example of finding a PR by clicking on a link to the commit

如果你有提交SHA而没有别的东西,并且不想去寻找它,只需将/commit/[commit SHA]添加到repo url,你将看到提交页面,如果是PR链接存在。 例如,如果SHA是52797a7a3b087231e4e391e11ea861569205aaf4且回购是https://github.com/glimmerjs/glimmer-vm,那么转到https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e391e11ea861569205aaf4

答案 1 :(得分:50)

git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

如有必要,请将origin更改为指向该遥控器的遥控器的名称 github存储库,拉请求将被发送到该存储库。首先 命令只需要为任何给定的遥控器运行一次,第二个将运行 通常在获得其他更新时完成。

这将导致git获取有关pull请求和实际的请求的信息 分支机构。它们将显示为origin/pull/123等远程跟踪分支。 完成后,您可以将git describe--all--contains一起使用 用于显示具有引用提交的第一个分支的选项。

但是,如果您要查找的提交实际上是一个,那么这将不起作用 从pull请求修改版本的提交,如果更改 被重新投入其他工作或者合并的人决定做出一些 变化。

答案 2 :(得分:21)

自2014年10月13日起,这应该是直截了当的:

例如:

您可以看到文件hakimel/reveal.js/plugin/markdown/markdown.jsmy contribution现在附带了对其发起的PR #734的引用。

PR from contrib

这来自 Linking merged pull requests from commits

  

我们已including the containing branches and tags on commit pages为您提供有关更改的更多背景信息。现在,在存储库的默认分支中提交也会显示引入它们的pull请求。

commit with PR reference in it!

  

在拉取请求中,您可以看到关于引入提交的原因的讨论,并更清楚地了解更改的原因。

     

与往常一样,如果您知道提交SHA,则可以跳过提交页面search for the pull request directly

答案 3 :(得分:5)

将提交哈希放入GitHub上的Pull Request过滤器字段。

enter image description here

答案 4 :(得分:3)

我遇到了同样的问题并编写了pr_for_sha bash助手,记录在这里:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

将其称为pr_for_sha <COMMIT>,它将在浏览器中打开相应的github pull请求页面。

答案 5 :(得分:0)

我一直是GitHub Web UI上厚脸皮的小链接的重度用户,但我希望有一种更快的方法,可以将我从终端直接带到那里,基本上是git pr SHA命令。这花了点功夫,但是这里有一系列的git别名,可以在MacOS上为您进行设置:

  git config --global alias.merge-commits '!funct() { git log --merges --reverse --oneline --ancestry-path $1..origin | grep "Merge pull request";  }; funct'
  git config --global alias.pr-number '!funct() { git merge-commits $1 | head -n1 | sed -n "s/^.*Merge pull request #\\s*\\([0-9]*\\).*$/\\1/p"; }; funct'
  git config --global alias.web-url '!funct() { git config remote.origin.url | sed -e"s/git@/https:\/\//" -e"s/\.git$//" | sed -E "s/(\/\/[^:]*):/\1\//"; }; funct'
  git config --global alias.pr '!funct() { open "`git web-url`/pull/`git pr-number $1`" ;}; funct'

如果您使用的是Linux,请将open替换为xdg-open,您会感到很满意。适应于GitLab也不应该太困难。

请注意,仅当您练习GitHub流并创建显式合并提交时,这才起作用。

我已经在这里写了更详细的解释:https://tekin.co.uk/2020/06/jump-from-a-git-commit-to-the-pr-in-one-command