赞
踩
例,代码仓库有如下两个分支master和feature分支。
- a - b - c - d Master
- \
- e - f - g - h - i - j - k Dev
现在将提交 f (commit hash id)应用到master分支。
- # 在Dev分支获取最近节点的HASHcommit值
- $ git log --oneline
-
- # 切换到 master 分支
- $ git checkout master
-
- # 执行 Cherry pick 操作
- $ git cherry-pick f
-
上面的操作完成以后,代码库就变成了下面的样子。
- a - b - c - d - f Master
- \
- e - f - g - h - i - j - k Dev
Cherry pick 支持的其它提交方式。
- # 应用Dev分支最新提交
- $ git cherry-pick Dev
-
- # 应用多个提交: 合并g,i两个提交
- $ git cherry-pick <HashG> <HashI>
-
- # 应用 f - k 之间的提交,不包含F节点本身,注意f节点必须是k节点前的提交节点
- $ git cherry-pick f..k
-
- # 应用 f - k 之间的提交,包含F节点本身
- $ git cherry-pick f^..k
需要注意的是执行git cherry-pick 后,只是将提交合并到本地,需要执行git push 指令,才会将合并commit提交到远程库。
报错处理。
如果在cherry-pick的时候出现类似以下错误提示,那可能是是对同一提交重复做cherry-pick引起的。
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
On branch auto-7940289-dev-0b41beba
Your branch is up to date with 'origin/auto-7940289-dev-0b41beba'.You are currently cherry-picking commit e924fd2.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
Error content分析:没有冲突输出,而是提示如果要提交则需要做空提交(git commit --allow-empty),说明这次cherry-pick的内容可能已经在这个分支上提交过了。
可以验证:1、查看这个哈希值所修改的文件 2、查看某个文件的修改log 3、有相同的提交注释
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。