Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master

何为摘樱桃:

git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作。一般用作 master 选择其他分支的"樱桃"进行选择性"摘取"提交,通俗的说就是:在dev的n多次提交里面把需要上线的代码有选择的合并到master.

使用场景:

稳定版本分支1与开发版本分支2,不能直接把两个分支合并,否则会导致版本混乱,要将分支2中的功能合入到分支1,则可以使用git cherry-pick高效完成

如果直接使用Merge-Changes 会将所有的提交合并到主干。

如果用的Beyond Compare 对比dev 和master 然后把需要提交的dev中的代码一个一个的弄到master里面,这样的操作不仅麻烦,而且容易漏文件。

        Merge-Changes   nocommit 。这样可以把分支的所有提交下载到本地,然后自己选择自己需要提交的文件commit。(如果不选nocommit会自动将所有的dev文件下载到本地仓库这样就不能有选择的提交了)具体操作方法如:

    1.切换到master分支,然后右击项目 git-Repository - Merge-Changes  然后 勾选nocommit如下图。

Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第1张图片

Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第2张图片 

上面的方法并不像是一个很正规的合并部分文件的操作。

下面介绍git合并部分分支提交到master的功能(Cherry-pick 摘樱桃),此功能会根据提交来合并功能。具体操作

1. 选择项目右击。git- show history

Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第3张图片

2.任意选一个提交,右击选select in git log

Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第4张图片

 

3.选择要合并的提交,右击选cherry-pick,注意这里可以选择一个或多个 ,进行提交

Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第5张图片

4.提交文件。
Git Cherry-pick (摘樱桃) 实现分支的部分提交合并到Master_第6张图片

 

 

下面是git指令图解描述

cherry-pick是Git里对commit操作很好的一个指令,比如想把test分支中的其中多个commit merge到master,那么你需要挑你所需要的commit合到master,这时候就用cherry-pick来捡。

     |            
     |        C3
     |         |
    C1        C2
     |         |  test
     |        /
     |     /
    master

想将test分支中的C2 commit合并到master分支,丢弃C3的修改。
直接merge会把C3也合并进去,这时用git cherry-pick可以解决问题

  • 先用git log查看,C2 commit的id,复制下来
  • git checkout 到master分支下
  • git cherry-pick

如果cherry-pick过程没有出现冲突的话,那就是完成了合并,如下图所示

     |
   C4
     |  \         
     |    \   C3
     |      \ |
    C1        C2
     |        |  test
     |      /
     |    /
   master

如果出现冲突,

  • 先解决冲突
  • git add 将解决了冲突的文件添加到暂存区
  • git cherry-pick --continue就行

 

你可能感兴趣的:(git)