福州网站建站,网站名申请,国际新闻最新消息今天乌克兰与俄罗斯视频,wordpress输密码访问前言
git cherry-pick是git中非常有用的一个命令#xff0c;cherry是樱桃的意思#xff0c;cherry-pick就是挑樱桃#xff0c;从一堆樱桃中挑选自己喜欢的樱桃#xff0c;在git中就是多次commit中挑选一个或者几个commit出来#xff0c;也可以理解为把特定的commit复制到…前言
git cherry-pick是git中非常有用的一个命令cherry是樱桃的意思cherry-pick就是挑樱桃从一堆樱桃中挑选自己喜欢的樱桃在git中就是多次commit中挑选一个或者几个commit出来也可以理解为把特定的commit复制到一个新分支上。
应用场景
commit 都提交了为什么还要复制新的出来
应用场景1有时候版本的一些优化需求开发到一半可能其中某一个开发完的需求要临时上或者某些原因导致待开发的需求卡住了已开发完成的需求上线。这时候就需要把 commit 抽出来单独处理。
应用场景2有时候开发分支中的代码记录被污染了导致开发分支合到线上分支有问题这时就需要拉一条干净的开发分支再从旧的开发分支中把 commit 复制到新分支。
命令使用
复制单个
现在有一条feature_cherrypick分支commit 记录如下
commit 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb (HEAD - feature_cherrypick, origin/feature_cherrypick)
Author: aiqinhai aiqinhaiqq.com
Date: Fri Sep 22 21:20:39 2023 0800 [修改代码]cherryPick第六次
需要把 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb 这次commit复制到另一个分支首先把 commitHash 复制下来然后切到 master 分支。master分支当前在cherryPick3()这个版本使用cherry-pick把 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb commit应用到当前分支。由于feature_cherrypick分支和master分支差三个分支在进行git cherry-pick之后出现冲突这时候进行冲突解决即可。 复制多个
以上是单个 commit 的复制下面再来看看 cherry-pick 多个 commit 要如何操作。一次转移多个提交
git cherry-pick commit1 commit2上面的命令将 commit1 和 commit2 两个提交应用到当前分支。多个连续的commit也可区间复制
git cherry-pick commit1^..commit2上面的命令将 commit1 到 commit2 这个区间的 commit 都应用到当前分支包含commit1、commit2commit1 是最早的提交。比如说feature_cherrypick分支有如下三个commit.
commit 668a7ca5daabd8dedbdfdc15e9abad912adc6414
Author: aiqinhai aiqinhaiqq.com
Date: Fri Sep 22 20:52:36 2023 0800[修改代码]cherryPick第三次commit 5b303cc62fcd3d3121619d1163f2ec3392d65b7c
Author: aiqinhai aiqinhaiqq.com
Date: Fri Sep 22 20:35:31 2023 0800[修改代码]cherryPick第二次commit 8ffb06b413047d818f920758288491c70c4fa9e4
Author: aiqinhai aiqinhaiqq.com
Date: Fri Sep 22 20:33:55 2023 0800[修改代码]cherryPick第一次 我们可以一次性将cherryPick第一次至cherryPick第三次三次commit复制新分支feature_app6.6上先切换到feature_app6.6分支上再执行git cherry-pick 8ffb06b413047d818f920758288491c70c4fa9e4^..668a7ca5daabd8dedbdfdc15e9abad912adc6414命令,执行结果如下。 应用成功之后git push到远程分支即可
cherry-pick 代码冲突
在cherry-pick多个commit时可能会遇到代码冲突这时cherry-pick会停下来让用户决定如何继续操作。我们可以解决冲突然后使用cherry-pick --continue让cherry-pick继续进行下去。把冲突之后的commit也复制进来整个流程就完成了。但有时候可能需要在代码冲突后放弃或者退出流程
放弃 cherry-pick
git cherry-pick --abort回到操作前的样子就像什么都没发生过。
退出 cherry-pick
git cherry-pick --quit不回到操作前的样子。即保留已经cherry-pick成功的 commit并退出cherry-pick流程。