背景
项目有两个分支同时在进行开发,A和B,之前在提交代码的时候,本来是应该提交到B,结果一直是提交到A中了,现在应用要发布,A中包含着别人的代码,不能一起发上去,于是现在只想把A中自己提交的部分pick出来,然后进行发布
使用 方法
- 使用git logs查看到自己的提交记录,找到自己提交的commitId并记录下来

- 选择要pick的记录,执行
1
| git cherry-pick eaa909 (要pick出来的hash值)
|
如果提示下面的错误,则说明要pick的commit是一个merge的commit,需要使用参数 -m ,后面加上属于1或者2,1或者2表示在出现冲突的时候,以哪个代码分支作为parent。如果是1的话,就是说将当前的代码作为parent,然后接受来自要pick的代码的变动。
这里我是需要将远程的merge操作同步到我本地,因此我使用的是2
1 2
| error: commit eaa909f0a353778f339b3a8c52611d2cfcd20c89 is a merge but no -m option was given. fatal: cherry-pick failed
|
1
| git cherry-pick -m 1 03c3c85d
|
- 如果涉及到要同步多个连续commit,则可以使用范围pick。将开始的commit和结束的commit用两个小数点进行连接,注意!区间pick是左开右闭的范围,也就是说不包含开始的commit,包含结束的commit。
以下面为例,就是最终合并的代码中不包含startHash,包含endHash
1
| git cherry-pic startHash..endHash
|