一、使用git cherry-pick
把分支提交的代码同步到另一个分支
实际场景: 在多版本项目开发中,大家应该经常会遇到需要把最新版本上开发的代码,同步到历史的版本中, 或者是在发版后发现了问题,在最新版代码上解决了该问题,同时也需要把以前有问题的版本给解决掉, 再把解决过的发个版给客户使用,这时分别在不同版本上改代码会很麻烦,如果能把一个版本上解决好的代码, 直接同步到另一个版本就好了,
git cherry-pick
就能满足这个需求,下面给大家介绍一下。
1. 背景知识
git cherry-pick
是同步哪些代码
git cherry-pick
同步的是当前提交记录中的代码,就算同一个文件的版本1
和版本2
中还有其他差异代码也不会同步。
git cherry-pick
同步原理
- 假设有两个分支:
master
分支,develop
分支textmaster a-b-c develop a-b-c-d-e-f
- 现要将
develop
提交的e
记录,同步到master
textmaster a-b-c-e develop a-b-c-d-e-f
- 同步后,只会把
e
记录所有操作同步到master
,此时只多了e
记录的内容。
2. 解决方案
- 使用
git
命令进行同步- 假设有两个分支:
master
分支,develop
分支textmaster a-b-c develop a-b-c-d-e-f
- 只同步一条记录
e
- 首先需要把代码切到需要同步的分支上,即
master
分支shellgit checkout master
- 查看
e
记录的commit id
(提交记录id
,下面简称eid
)shellgit log
- 执行同步操作,把
e
记录同步到master
分支shellgit cherry-pick eid
- 同步成功,直接
git commit
即可 - 如果存在冲突,解决冲突之后,
git add
之后再git commit
即可。 - 如果同步错误,可取消之前的
cherry-pick
shellgit cherry-pick --quitgit
- 同步多条记录
d
,e
,f
- 首先需要把代码切到需要同步的分支上,即
- 假设有两个分支:
- IDEA同步参考 IDEA同步某一次提交