3

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

 1 year ago
source link: https://www.v2ex.com/t/941637
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  问与答

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

  a33291 · 4 小时 45 分钟前 · 381 次点击
请教各位

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


谢谢
8 条回复    2023-05-21 13:29:08 +08:00
mercury233

mercury233      2 小时 38 分钟前   ❤️ 1

点开 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

mercury233      2 小时 28 分钟前   ❤️ 1

如果想在网页版操作,可以根据对方的分支重新开 PR 到你的库
打开任意仓库的 pull request 界面,点 new pull request ,右边输入对方仓库的对应分支,左边输入你的仓库的主分支即可

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

当然如果对方已经删库就不能这么干了,只能命令行
winterbells

winterbells      1 小时 19 分钟前 via Android   ❤️ 1

pr 链接结尾加 .diff 就是 patch 文件,感觉比 pull 什么的方便多了
a33291

a33291      41 分钟前

@mercury233 #2 这个的确头一次知道,我一直以为只有自己的库可以发起 PR,谢谢普及
a33291

a33291      39 分钟前

@winterbells 嗯,这种方式应该也行,目前好像没有类似的可以提取一个项目所有未合并的 PR 地址的工具,有的话应该可以自动生成所有 PR 的 patch 了,然后在本地自行重放 patch 就可以
leonshaw

leonshaw      28 分钟前   ❤️ 1

@a33291 github API?
mercury233

mercury233      23 分钟前   ❤️ 1

@a33291 这种工具意义不大吧,合并 patch 经常遇到冲突,也需要仔细的检查,最重要的是这个一般不是高频操作

需要的话 github 的 api 应该是很容易的
const prs = await octokit.request(`GET /repos/${repoName}/pulls`);
a33291

a33291      11 分钟前

#6 #7
我去了解哈 API 看是否支持


我之前遇到的上游仓库上的 PR 已经是无冲突状态,只是没有 merge.当然也有冲突的,这种就只有自行合并了.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK