Pull请求非常适合理解围绕对repo所做的更改或一组更改的更大思考。读取拉取请求是快速“理解”项目的一种好方法,因为您可以获得更大的逻辑更改分组,而不是对源进行小的原子更改。类似于将代码中的行组织成相关的“节”,以便于阅读。
我发现自己正在查看文件或提交,我想知道是否有办法将提交回溯到最初创建它的Pull Request。 Pull Request最终会被合并,但不一定是合并提交。
答案 0 :(得分:182)
您可以转到github并在搜索栏中输入SHA,确保选择左侧的“问题”链接。
2017年7月13日更新
通过Github UI,现在有一种非常简单的方法可以做到这一点。如果您正在查看UI中分支的提交列表中的提交,请单击提交本身的链接。如果该提交有PR并且没有直接添加到分支,则PR列出PR编号及其分支的PR的链接将直接位于页面顶部的提交消息下。
如果你有提交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.js
,my contribution现在附带了对其发起的PR #734的引用。
这来自 Linking merged pull requests from commits :
我们已including the containing branches and tags on commit pages为您提供有关更改的更多背景信息。现在,在存储库的默认分支中提交也会显示引入它们的pull请求。
在拉取请求中,您可以看到关于引入提交的原因的讨论,并更清楚地了解更改的原因。
与往常一样,如果您知道提交SHA,则可以跳过提交页面search for the pull request directly。
答案 3 :(得分:5)
答案 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