zoukankan      html  css  js  c++  java
  • 提高cherry-pick效率的脚本

    ## 背景

    有一份代码, 需要被应用到多个分支上, 所以选择了cherry-pick来实现

    但是当需要被cherry-pick的commit太多的时候, 需要一个个去找到对应的commit-id, 比较麻烦

    ## 解决办法:bash脚本

    function get-commit-message-by-commit-id() {
      local commit_id=$1
      git log --format=%B -n 1 $commit_id | cat
    }
    
    # 获取前N个commit的commit号, 用于cherry-pick
    function get-0-to-N-commits() {
      local commit_num=$1
      echo "找出 $(git rev-parse --abbrev-ref HEAD) 分支最新的 (0..$commit_num) commits"
    
      for i in {0..$commit_num}; do
        local commit_id=$(git rev-parse  HEAD~$i)
        echo "git cherry-pick $commit_id ; # 第 $i 个 $(get-commit-message-by-commit-id $commit_id)";
      done
    }
    

    ## 用法

    把当前分支的前11个commit,cherry-pick到其他分支上

    ### 步骤.1 列出需要被pick的comit, 并拼接成命令

    lijunwei@bxzy:udesk_yy_oss$ get-0-to-N-commits 10

     ### 步骤.2 切到对应的分支, 从下到上(注意是从下到上pick), 依次cherry-pick

    ## 反思

    cherry-pick的时候,会发现

    + 如果每个commit都是相对独立的, cherry-pick的体验很好

    + 如果每个commit整理得很乱, cherry-pick的体验时就会很痛苦, 可能需要反复解决冲突

  • 相关阅读:
    中海洋朗讯杯比赛总结[2014年12月]
    青理工ACM比赛总结和反思[2014年11月]
    程序员技术练级攻略
    一天能学会的计算机技术
    UVa 1597
    回滚机制
    超时和重试机制
    降级特技
    限流详解
    隔离术
  • 原文地址:https://www.cnblogs.com/leejunwei/p/git-cherry-pick-effiency.html
Copyright © 2011-2022 走看看