场景
你本地有一个feature分支. 假设完成开发需要10次commit, 当前你commit了8次. 此时有需求要你把前5次commit的结果合并到master上, 这个时候就可以使用git cherry-pick
命令行
git log
查找并复制第5次commit的hash码git stash save
把本地未暂存的修改藏起来(如果有的话)git checkout master
切换回master分支git cherry-pick hash码
-e 选项可以编辑commit信息, 如果为空, 则取消提交, 但feature分支中前5次commit修改的文件会被暂存, 等待重新提交; -x 选项会使用提交信息后面出现(cherry picked from commit xxx)等文字, 场景中feature只是本地的分支, Git手册不建议添加这些信息git checkout feature
回到feature分支git stash pop
释放之前的被藏起来的修改, 继续开发
图形界面
以WebStorm为例, 图形界面操作如下(JetBrains系列的产品通用):
- 切换到master分支
- 打开版本控制界面(快捷键⌘+9)
- 左键点击需要合并的commit
- 点击樱桃图标
后记
cherry-pick名字好听, 方便好用.
注: 跟
git cherry
不是同一回事