美文网首页工作生活
git cherry-pick 使用

git cherry-pick 使用

作者: SevenLin1993 | 来源:发表于2019-06-30 22:37 被阅读0次

    git cherry-pick 使用

    简介

    git cherry-pick用于把某些现有的commit合并到当前分支,合并的内容就是该commit产生的改变。

    通常场景:

    在某个分支开发了两个功能:功能A和功能B,假设产生了两个commit:commitA和commitB,而本次功能上线只需要功能A,那么这个分支就无法往主分支合并,这个时候就可以通过cherry-pick功能在一个新的分支上把功能A对应的commitA合并过来,这样就可以通过新分支把功能A合并到主分支,进行测试上线。

    使用

    • Demo
    # 在分支A
    $ git checkout A
    # 功能1
    $ touch feature-1.txt
    $ git add feature-1.txt
    $ git commit -m"feature1"
    [A 0772c06] feature1
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 feature-1.txt
    # 功能2
    $ touch feature-2.txt
    $ git add feature-2.txt
    $ git commit -m"feature2"
    [A 1655609] feature2
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 feature-2.txt
    $ git log
    commit 16556094a5e65eca7b2199ab492e2653fb6b5a5e
    Author: sevenlin
    Date:   Thu Jun 27 15:03:30 2019 +0800
    
        feature2
    
    commit 0772c0682b2885c59413545e0a1a8e1fe5d9c9ee
    Author: sevenlin
    Date:   Thu Jun 27 15:03:05 2019 +0800
    
        feature1
    
    # 切换为分支B
    $ git checkout B
    Switched to branch 'B'
    # 使用cherry-pick 合并功能1
    $ git cherry-pick  0772c0682b2885c59413545e0a1a8e1fe5d9c9ee
    [B c2f67c3] feature1
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 feature-1.txt
    # 查看已经合并过来
    $ git log
    commit c2f67c3d493bbe7cb4f5ffd1511a027c6c29281c
    Author: sevenlin
    Date:   Thu Jun 27 15:03:05 2019 +0800
    
        feature1
    

    冲突

    只要是合并就有可能冲突,那么在使用cherry-pick的时候也需要注意冲突,如果发生冲突

    • 可以解决冲突之后,可以通过git cherry-pick --continue处理合并
    • 如果产生冲突不想合并,可以通过git cherry-pick --abort取消操作

    总结

    • 开发新功能的过程中尽量一个功能一个分支,这样可以减少部分功能上线的问题
    • 某些特殊场景确实需要使用cherry-pick,那么需要对现有的commit有充分的了解,不然会导致不必要的冲突。

    相关文章

      网友评论

        本文标题:git cherry-pick 使用

        本文链接:https://www.haomeiwen.com/subject/dgeicctx.html