首页 > 其他分享 >git中的cherry-pick和merge有些区别以及cherry-pick怎么用

git中的cherry-pick和merge有些区别以及cherry-pick怎么用

时间:2023-10-01 10:31:53浏览次数:47  
标签:git cherry dev merge pick commit 分支


git中的cherry-pick和merge在使用场景上有些区别:

  • cherry-pick用于将另一个分支的某一次或几次commit应用到当前分支。它可以选择性地拉取代码修改。
  • merge用于将两个分支合并成一个新分支。它会把整个分支上的所有修改都合并过来。
    具体区别:
  • cherry-pick通常用于将bug修复从发布分支应用到开发分支。只合并特定的commit,不会包含目标分支的所有修改。
  • merge用于合并功能分支到主分支。它把一个完整功能分支的所有修改都合并过去。
  • cherry-pick保留原commit的SHA值和注释等信息,merge则会生成新的commit信息。
  • merge可能需要处理代码冲突,cherry-pick如果存在冲突需要手动解决。
  • merge合并整个分支历史,cherry-pick只应用指定commit而不包含历史。

总之,当需要应用另一个分支的部分修改时用cherry-pick,需要合并整个分支时用merge。它们侧重的场景不同。

cherry-pick使用例子:

这里是一个使用git cherry-pick的示例:
假设我们在dev分支上开发,已经有了一些commit:

A-B-C-D (dev)

同时在master分支上也有一些commit:

W-X-Y-Z (master)

我们在dev上开发了一个新的功能,在feature分支上完成了几个commit:

git中的cherry-pick和merge有些区别以及cherry-pick怎么用_使用例子

现在我们想要只合并commit F到dev分支,可以使用cherry-pick:

git checkout dev
git cherry-pick F

这会应用commit F到dev分支,dev分支现在变为:

git中的cherry-pick和merge有些区别以及cherry-pick怎么用_git_02

可以看到,我们只将feature分支上的F这个commit应用到了dev分支,而不是合并整个feature分支。
这就是cherry-pick的一个简单用法,它可以灵活地挑选修改并应用到当前分支。


标签:git,cherry,dev,merge,pick,commit,分支
From: https://blog.51cto.com/u_10176086/7672406

相关文章

  • Git详解
    学习git之前,我们需要先明白一个概念版本控制!什么是版本控制版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。实现跨区域多人协同开发追踪和记载一个或者多个文件......
  • git 常用命令操作
    Git是一个分布式版本控制系统,常用于代码管理和版本控制。以下是一些常用的Git命令:初始化Git仓库:gitinit这个命令会初始化一个Git仓库,在当前目录下创建一个新的.git目录。添加文件到暂存区:gitadd.这个命令将当前目录下的所有文件添加到暂存区,准备进行版本......
  • gitlab升级后Runner 500报错
    gitlab升级后500报错今天是月饼节哦。长假最适合梳理下这段时间的工作经验。上个月说到gitlab升级到16.2.3,其实升级后没几天遇到一个比较棘手的问题:超级管理员登录进去,修改什么配置保存后都会报错500,不仅如此,还发现项目无法移动命名空间(可以理解为a用户的项目移到b用户......
  • git日常操作汇总
    1、如果本地已经有代码,现在想用git管理,操作步骤如下:1、进入项目根目录下,执行gitinit2、添加所有文件gitadd.3、提交gitcommit-m'init'4、关联到远程仓库,git上先创建一个项目,然后再关联gitremoteaddoriginhttps://gitee.com/xxx/hr.git5、gitpush-uorigin......
  • 基于TOTP算法的Github两步验证2FA(双因子)机制Python3.10实现
    从今年(2023)三月份开始,Github开始强制用户开启两步验证2FA(双因子)登录验证,毫无疑问,是出于安全层面的考虑,毕竟Github账号一旦被盗,所有代码仓库都会毁于一旦,关于双因子登录的必要性请参见:别让你的服务器(vps)沦为肉鸡(ssh暴力破解),密钥验证、双向因子登录值得拥有。双因子登录说......
  • gitlab--在 k8s 里通过 helm 部署 runner、使用缓存 cache、使用制品 artifacts
    安装helm链接:https://www.cnblogs.com/zouzou-busy/p/16134885.html配置chart存储库#添加chart存储库[root@master1~]#helmrepoaddgitlabhttps://charts.gitlab.io"gitlab"hasbeenaddedtoyourrepositories#查看存储库[root@master1~]#helmrepolist......
  • git clone项目报错fatal: fetch-pack: invalid index-pack output问题解决
    gitclone项目报错fatal:fetch-pack:invalidindex-packoutput问题解决原因出现该问题的原因是gitclone的项目过大导致项目拉去失败解决方法首先拉去项目最后一次提交gitclone--depth=1项目地址;拉取全部项目内容gitfetch--unshallow,一般不大的项目都可以......
  • Git合并分支和复位笔记
    复位reset复位是把目前branch的版本复位到某个指点的版本。要复位branch到某个指定版本,要先到history里reset再Revertchange。这里不管是复位到旧版本还是新版本,由于和原来的不一致,都算被修改过,所以都要重新Revert掉。这里的reset就可以fetch远程库后进行更新,也可以reset旧......
  • git:一个分支直接覆盖另外一个分支
    有个dev分支和main分支,想隔一段时间就把自己的dev分支上的代码保持和main分支一直,则需要如下操作:1.我想将main分支上的代码完全覆盖dev分支,首先切换到dev分支gitcheckoutdev2.然后直接设置代码给远程的main分支上的代码#目前是dev分支,下面命令直接将代码dev代码改成和origi......
  • 从0到1的手把手教你配置项目git提交规范及其执行顺序
    从0到1的手把手教你配置项目git提交规范及其执行顺序这里以React项目为例初始化一个项目npxcreate-react-appmy-app--templatetypescriptcdmy-appnpmstart初始化gitgitinit安装husky并进行配置npmihusky#根据node_m......