提高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的体验时就会很痛苦, 可能需要反复解决冲突

posted @ 2021-04-26 17:56  什么能让我为谁停留  阅读(205)  评论(1编辑  收藏  举报