Git cherry-pick 使用小技巧

cherry-pick 主要应用与一些小的修复,安全更新、紧急 bug 的处理,如果一个分支上的大部分 commit 都要被 cherry-pick 到另一个分支,不如考虑直接 使用 merge 或者 rebase。

背景

前段时间我在实现 StarRocks 的一个关于资源限制的特性[1],由于该功能需要基于最新的 3.5 tag 进行开发,所以我需要需要从 3.5 的 tag 里拉出一个分支(3.5-feature)开发完成后再向上游的 main 分支提交 PR。

解决方案

如果直接使用 3.5-feature 分支向 main 提交 PR 会有很多之前的 commit 导致文件修改很多,所以得换一种方式提交这些变更。

stash

解决这个问题的办法也蛮多的,第一种是使用 git stash

这个可以先将修改临时保存,然后再需要的时候再将 stash 里的数据应用到当前分支。

但这样有几个问题:

• 开发的过程中没法提交代码了,提交之后就没法保存到 stash 里,没有提交代码总会有丢数据的风险。

• 后续需要多次提交时,stash 也不支持,毕竟 stash 之后当前分支的代码就没有了。

手动复制

第二种办法那就是先把代码提交到 3.5-feature,然后重新基于 main 分支重新拉取一个分支,再手动对比 3.5-feature 的提交记录进行修改。

这样的好处是提交记录比较干净,但坏处是改动较多的话容易遗漏代码,并且每次在 3.5-feature 的改动都需要人工同步过来。

cherry-pick

我第一次看到 cherry-pick 的用法还是在 Pulsar 社区里,经常看到有 PR[2] 将某个在 main 分支的特性 cherry-pick 到其他分支。

图片

或者是一些重要的安全更新也需要在一些维护版本的分支进行修复。

图片

cherry-pick 的主要作用是将其他分支的特定提交精确合并到当前分支,以便在不合并整个分支的情况下同步修复、hot-fix 或者是复用代码;

使用流程如下:

git checkout main 
git pull origin main 
git checkout -b main-feature
# 只pick你真正需要的功能相关提交

# 你的核心功能提交1 
git cherry-pick abc123 

# 你的核心功能提交2
git cherry-pick def456 ...

图片

这里的 abc123 和 def456 都是提交记录的 hash 值,可以通过 git log 命令获取;也可以在 github 的提交记录页面复制。

如果碰到冲突先解决,然后执行:

git cherry-pick --continue

git push origin main-feature

假设存在两个分支:

a - b - c - d   main
         \
           e - f - g main-feature
git cherry-pick f

    现在需要将 main-feature 分支里的 f 提交到 main 分支,cherry-pick 之后会变成这样:

    a - b - c - d - f   main
             \
               e - f - g main-feature

    f 这个提交就会被追加到头部。

    适用场景

    cherry-pick 主要应用与一些小的修复,安全更新、紧急 bug 的处理,如果一个分支上的大部分 commit 都要被 cherry-pick 到另一个分支,不如考虑直接 使用 merge 或者 rebase。

    就像这个功能的名称一样:摘樱桃。选择合适的果子进行摘取,而不是把所有的提交都合并过去。

    #Blog #Github #Git

    引用链接

    [1] 资源限制的特性: https://github.com/StarRocks/starrocks/pull/62705

    [2] PR: https://github.com/apache/pulsar/pull/24571

    AI大模型学习福利

    作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

    一、全套AGI大模型学习路线

    AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

    二、640套AI大模型报告合集

    这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    三、AI大模型经典PDF籍

    随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    四、AI大模型商业化落地方案

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值