当前位置:   article > 正文

git cherry-pick 的使用 — 跨分支转移代码_git push某一个cherry pick commit到远端分支

git push某一个cherry pick commit到远端分支

需求: 将代码从一个分支转移到另一个分支

情况一:提交另一个分支的所有代码变动,采用合并 (git merge)
情况二:你只需要部分代码变动(某几个提交),这时可以采用 git cherry-pickgit rebase --onto

其中 git rebase --onto 更适用于提交一系列相连的commits, git cherry-pick 更适用于提交一个或较少的几个commit

一、基本用法

首先切换到想要提交变动的分支: 如 git checkout master

$ git cherry-pick <commitHash>
$ git cherry-pick <HashA> <HashB> // 应用A到B两个提交
$ git cherry-pick A..B // 
$ git cherry-pick A^..B 
  • 1
  • 2
  • 3
  • 4

二、配置项

(1)-e,–edit

打开外部编辑器,编辑提交信息。

(2)-n,–no-commit

只更新工作区和暂存区,不产生新的提交。

(3)-x

在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。

(4)-s,–signoff

在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

(5)-m parent-number,–mainline parent-number

如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。

-m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。

$ git cherry-pick -m 1 <commitHash>
  • 1

上面命令表示,Cherry pick 采用提交commitHash来自编号1的父分支的变动。

一般来说,1号父分支是接受变动的分支(the branch being merged into),2号父分支是作为变动来源的分支(the branch being merged from)。

三、代码冲突

如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。

(1)–continue
用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue
  • 1

(2)–abort
发生代码冲突后,放弃合并,回到操作前的样子。

(3)–quit
发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

四、转移到另一个代码库

详见参考链接

git cherry-pick 教程 — 阮一峰的网络日志
git rebase --onto参考

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

闽ICP备14008679号