Git cherry-pick

Posted 坚持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git cherry-pick相关的知识,希望对你有一定的参考价值。

  假设你在dev01分支开发了2个新功能(A,B),对应2个commitA,commitB,但是上线前被告知只能上线功能A,此时可以:

1. 新建1个分支dev02

2. 将dev01上功能A对应代码cherry-pick到dev02上,dev02就有了功能A对应的代码

  • cherry-pick的用法:
  • $ git cherry-pick 6bbf6b4 #6bbf6b4为dev01上的commitId
  • 举个栗子:

   把dev01分支上的commit(增加1个文件),cherry-pick应用到dev02分支上。

  • /code/lianxi (dev01)
    $ git commit -m "add 1.txt"    #dev01分支提交了1个commit 6bbf6b4
    [dev01 6bbf6b4] add 1.txt
    file changed, 1 insertion(+)
     create mode 100644 1.txt
    
    /code/lianxi (dev01)
    $ git log
    commit 6bbf6b4568d3b657dcfe06f06a69bd250c769942  #commit 信息
    Author: a
    Date:   Wed Jun 7 17:45:28 2017 +0800
    
        add 1.txt
    
    /code/lianxi (dev01)
    $ git checkout dev02 #切换到dev02分支操作
    Switched to branch ‘dev02‘
    
    /code/lianxi (dev02)
    $ ls #dev02下此时没有1.txt
    
    /code/lianxi (dev02)
    $ git cherry-pick 6bbf6b4 #将commit6bbf6b4 应用到dev02上
     [dev02 5e716f5] add 1.txt Date: Wed Jun 7 17:45:28 2017 +0800 file changed, 1 insertion(+) create mode 100644 1.txt 

    /code/lianxi (dev02)
    $ git log #在dev02会产生1个新的commitId,内容为commit 6bbf6b4改动的内容
    commit 5e716f52a541098afd0a0b74551878d119f97d14 
    Author: a
    Date: Wed Jun
    7 17:45:28 2017 +0800
    add
    1.txt

    /code/lianxi (dev02)
    $ ls #dev02也有了1.txt
    1.txt

     

以上是关于Git cherry-pick的主要内容,如果未能解决你的问题,请参考以下文章

Git cherry-pick

git cherry-pick用法

git cherry-pick

Git命令cherry-pick,选择把一部分代码提交到另一个分支

git cherry-pick用法

Git cherry-pick 复制 commit