拣选(Cherry-Pick)

Git 高级

Amanda Crawford-Adamo

Software and Data Engineer

什么是拣选?

将特定提交的更改应用到其他分支

【单个提交拣选】

git cherry-pick <commit-hash>

【多个提交拣选】

git cherry-pick <hash1> <hash2> ..

【用途】

  • 在分支间应用特定修复
  • 回退功能到稳定版本
  • 有选择地应用试验性更改
  • 找回丢失的提交
Git 高级

拣选示例

一张展示 main 与 feature 的图。main 有两个提交。feature 在 main 的最后一次提交后分叉。

两张图,展示拣选前 main 与 feature 分支的日志。

Git 高级

拣选流程

  1. 切换到 main 分支

    git checkout main
    
  2. 运行拣选命令,将 feature 分支的提交 def456 引入

    git cherry-pick def456
    

一张展示 main 与 feature 的图。main 有三个提交;feature 在第二次提交后分叉并有两个附加提交。main 的第三次提交为从 feature 最后一次提交拣选而来。

Git 高级

解决拣选冲突

解决冲突步骤
  1. 手动编辑冲突文件
  2. 将已解决的文件加入暂存区 git add <resolved-files>
  3. 继续拣选流程,运行 --continue 标志
git cherry-pick --continue
停止拣选

要停止拣选操作,使用 --abort 标志

git cherry-pick --abort
Git 高级

何时使用拣选

适用场景

  1. 应用热修复
  2. 测试独立功能

注意事项

  1. 可能产生重复提交
  2. 过度使用会使历史复杂
  3. 变更较大时:考虑合并或变基
Git 高级

开始练习吧!

Git 高级

Preparing Video For Download...