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

2023-05-21 08:55:17 +08:00
 a33291
请教各位

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


谢谢
1273 次点击
所在节点    问与答
9 条回复
mercury233
2023-05-21 11:02:15 +08:00
点开 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
2023-05-21 11:12:29 +08:00
如果想在网页版操作,可以根据对方的分支重新开 PR 到你的库
打开任意仓库的 pull request 界面,点 new pull request ,右边输入对方仓库的对应分支,左边输入你的仓库的主分支即可

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

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

需要的话 github 的 api 应该是很容易的
const prs = await octokit.request(`GET /repos/${repoName}/pulls`);
a33291
2023-05-21 13:29:08 +08:00
#6 #7
我去了解哈 API 看是否支持


我之前遇到的上游仓库上的 PR 已经是无冲突状态,只是没有 merge.当然也有冲突的,这种就只有自行合并了.
nightwitch
2023-05-21 13:54:26 +08:00
#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