V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a33291
V2EX  ›  问与答

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

  •  
  •   a33291 · 334 天前 · 1129 次点击
    这是一个创建于 334 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教各位

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


    谢谢
    9 条回复    2023-05-21 13:54:26 +08:00
    mercury233
        1
    mercury233  
       334 天前   ❤️ 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
        2
    mercury233  
       334 天前   ❤️ 1
    如果想在网页版操作,可以根据对方的分支重新开 PR 到你的库
    打开任意仓库的 pull request 界面,点 new pull request ,右边输入对方仓库的对应分支,左边输入你的仓库的主分支即可

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

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

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


    我之前遇到的上游仓库上的 PR 已经是无冲突状态,只是没有 merge.当然也有冲突的,这种就只有自行合并了.
    nightwitch
        9
    nightwitch  
       334 天前 via Android
    #5 是伪需求,pr 之间肯定是要挑选的,pr 和 pr 之间的特性往往也是有冲突的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3561 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:34 · PVG 18:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.