赞
踩
情况一:提交另一个分支的所有代码变动,采用合并 (git merge)
情况二:你只需要部分代码变动(某几个提交),这时可以采用 git cherry-pick 或 git 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)-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>
上面命令表示,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
(2)–abort
发生代码冲突后,放弃合并,回到操作前的样子。
(3)–quit
发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。
详见参考链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。