当前位置:   article > 正文

Git:合并提交节点到其它分支的详细操作[git cherry-pick]_git 合并其他分支提交

git 合并其他分支提交

git cherry-pick:合并提交节点到其它分支,将指定的提交(commit)应用于其他分支。

例,代码仓库有如下两个分支masterfeature分支。

  1. a - b - c - d Master
  2. \
  3. e - f - g - h - i - j - k Dev

现在将提交 f (commit hash id)应用到master分支。

  1. # 在Dev分支获取最近节点的HASHcommit值
  2. $ git log --oneline
  3. # 切换到 master 分支
  4. $ git checkout master
  5. # 执行 Cherry pick 操作
  6. $ git cherry-pick f

上面的操作完成以后,代码库就变成了下面的样子。

  1. a - b - c - d - f Master
  2. \
  3. e - f - g - h - i - j - k Dev

Cherry pick 支持的其它提交方式。

  1. # 应用Dev分支最新提交
  2. $ git cherry-pick Dev
  3. # 应用多个提交: 合并g,i两个提交
  4. $ git cherry-pick <HashG> <HashI>
  5. # 应用 f - k 之间的提交,不包含F节点本身,注意f节点必须是k节点前的提交节点
  6. $ git cherry-pick f..k
  7. # 应用 f - k 之间的提交,包含F节点本身
  8. $ 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、有相同的提交注释
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/756553
推荐阅读
相关标签
  

闽ICP备14008679号