Skip to content

一、使用git cherry-pick把分支提交的代码同步到另一个分支

实际场景: 在多版本项目开发中,大家应该经常会遇到需要把最新版本上开发的代码,同步到历史的版本中, 或者是在发版后发现了问题,在最新版代码上解决了该问题,同时也需要把以前有问题的版本给解决掉, 再把解决过的发个版给客户使用,这时分别在不同版本上改代码会很麻烦,如果能把一个版本上解决好的代码, 直接同步到另一个版本就好了,git cherry-pick就能满足这个需求,下面给大家介绍一下。

1. 背景知识

git cherry-pick是同步哪些代码

  • git cherry-pick同步的是当前提交记录中的代码,就算同一个文件的版本1版本2中还有其他差异代码也不会同步。

git cherry-pick同步原理

  • 假设有两个分支:master分支,develop分支
    text
      master   a-b-c
      develop  a-b-c-d-e-f
  • 现要将develop提交的e记录,同步到master
    text
      master   a-b-c-e
      develop  a-b-c-d-e-f
  • 同步后,只会把e记录所有操作同步到master,此时只多了e记录的内容。

2. 解决方案

  • 使用git命令进行同步
    • 假设有两个分支:master分支,develop分支
      text
        master   a-b-c
        develop  a-b-c-d-e-f
    • 只同步一条记录e
      • 首先需要把代码切到需要同步的分支上,即master分支
        shell
          git checkout master
      • 查看e记录的commit id(提交记录id ,下面简称eid
        shell
          git log
      • 执行同步操作,把e记录同步到master分支
        shell
          git cherry-pick eid
      • 同步成功,直接git commit即可 cherry.png
      • 如果存在冲突,解决冲突之后,git add之后再git commit即可。
      • 如果同步错误,可取消之前的cherry-pick
        shell
          git cherry-pick --quitgit
      • 同步多条记录def
  • IDEA同步参考 IDEA同步某一次提交

Released under the MIT License.