是否有方法可以简单的合并上游项目上的 PR?

347 天前
 a33291
请教各位

一些比较流行的开源项目在后续过程中不再维护或者不再积极维护,积压了很多 PR(其中有一些 PR 是有意义的,比如提升性能或者修复 bug).
如果我 fork 项目后,是否有比较高效 /直观的方式能够合并这些 PR 到我 fork 的项目呢?
如果再去拉取提交 PR 的仓库手动合并感觉很累


谢谢
1144 次点击
所在节点    问与答
9 条回复
mercury233
347 天前
点开 wants to merge 1 commit into AAA:XXX from BBB:YYY 最后的链接
地址里 tree 前面的是对方仓库地址,后面的是分支名
在你的本地仓库运行 git pull 仓库地址 分支名
就可以了
比如 https://github.com/livid/v2ex-gae/pull/26
就是 git pull https://github.com/alexzhan/v2ex patch-1
当然,遇到合并冲突需要处理后再提交

如果遇到对方已经删库的情况,可以从主仓库 pull 最后一个对方 commit 的 hash ,比如
https://github.com/livid/v2ex-gae/pull/31
就是 git pull https://github.com/livid/v2ex-gae 150bf8ca539cea405f89090465d65d475b234fb1
mercury233
347 天前
如果想在网页版操作,可以根据对方的分支重新开 PR 到你的库
打开任意仓库的 pull request 界面,点 new pull request ,右边输入对方仓库的对应分支,左边输入你的仓库的主分支即可

没错你可以创建一个右边不是你的库的 pull request (甚至两边都可以不是你的,但这明显很不礼貌)

当然如果对方已经删库就不能这么干了,只能命令行
winterbells
347 天前
pr 链接结尾加 .diff 就是 patch 文件,感觉比 pull 什么的方便多了
a33291
347 天前
@mercury233 #2 这个的确头一次知道,我一直以为只有自己的库可以发起 PR,谢谢普及
a33291
347 天前
@winterbells 嗯,这种方式应该也行,目前好像没有类似的可以提取一个项目所有未合并的 PR 地址的工具,有的话应该可以自动生成所有 PR 的 patch 了,然后在本地自行重放 patch 就可以
leonshaw
347 天前
@a33291 github API?
mercury233
347 天前
@a33291 这种工具意义不大吧,合并 patch 经常遇到冲突,也需要仔细的检查,最重要的是这个一般不是高频操作

需要的话 github 的 api 应该是很容易的
const prs = await octokit.request(`GET /repos/${repoName}/pulls`);
a33291
347 天前
#6 #7
我去了解哈 API 看是否支持


我之前遇到的上游仓库上的 PR 已经是无冲突状态,只是没有 merge.当然也有冲突的,这种就只有自行合并了.
nightwitch
347 天前
#5 是伪需求,pr 之间肯定是要挑选的,pr 和 pr 之间的特性往往也是有冲突的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX