当前位置: 首页 > news >正文

Git合并分支的两种常用方式`git merge`和`git cherry-pick`

Git合并分支的两种常用方式`git merge`和`git cherry-pick`

  • 写在前面
  • 1. git merge
    • 用途
    • 工作方式
    • 使用git命令方式合并
    • 使用idea工具方式合并
  • 2. git cherry-pick
    • 用途
    • 工作方式
    • 使用git命令方式合并
    • 使用idea工具方式合并
  • 3. 区别总结

写在前面

一般我们使用git合并分支常用的就是`git merge`和`git cherry-pick`这两种方式。
它们都是 Git 中用于整合代码变更的命令,但它们的使用场景和工作方式有所不同。
`git merge`是合并整个分支的所有提交,当两个分支差异比较大的时候不适合将整个分支合并过去,
这时候就需要使用`git cherry-pick`(优选) 选择我们需要的提交记录进行合并。
下面介绍一下二者的使用方式和应用场景。

1. git merge

用途

git merge主要用于将一个分支的所有更改合并到另一个分支。通常在开发过程中,当你在一个特性分支上完成了开发工作,想要将这些更改集成到主分支(如main或master)时,就会使用git merge

工作方式

它会将源分支上的所有提交历史合并到目标分支。如果在合并过程中没有冲突,Git 会创建一个新的合并提交,该提交包含两个分支的更改;如果有冲突,则需要手动解决冲突后再完成合并。

使用git命令方式合并

# 切换到目标分支
git checkout main
# 合并特性分支到主分支
git merge feature-branch

使用idea工具方式合并

1、准备工作
确保你已经在 IDEA 中正确配置了 Git,并且项目已经与 Git 仓库关联。可以通过 File -> Settings(Windows/Linux)或 IntelliJ IDEA -> Preferences(Mac),在 Version Control -> Git 中查看和配置 Git 路径。
打开你要操作的项目,确保当前分支是你想要将提交合并到的目标分支。

2、具体操作
通过版本控制 (Version Control) 工具窗口,通常可以通过点击 IDEA 左下角的 Git 图标打开。
在这里插入图片描述

2. git cherry-pick

用途

git cherry-pick允许你从一个或多个提交中选择特定的更改,并将这些更改应用到当前分支。当你只需要某个分支上的部分提交,而不是整个分支的所有更改时,就可以使用git cherry-pick

工作方式

它会将指定提交的更改复制到当前分支,并创建一个新的提交。这个新提交的内容与原始提交相同,但提交哈希值不同。如果在应用更改时出现冲突,同样需要手动解决冲突后再完成操作。

使用git命令方式合并

# 切换到目标分支
git checkout main
# 应用指定提交的更改到当前分支
git cherry-pick <commit-hash>

使用idea工具方式合并

准备工作git merge相同,点击 IDEA 左下角的 Git 图标打开操作窗口。
在这里插入图片描述

3. 区别总结

范围git merge是合并整个分支的所有提交,而git cherry-pick只选择特定的提交进行应用。
提交历史git merge会保留源分支的提交历史,形成一个合并提交;git cherry-pick会创建新的提交,原始提交历史仍然保留在源分支上。
使用场景:当你需要将一个分支的完整开发成果集成到另一个分支时,使用git merge;当你只需要某个分支上的部分提交时,使用git cherry-pick

最后,一般在git merge合并操作能满足使用需求的情况下,优先建议使用 git merge,而不是git cherry-pick。只有两个分支存在冲突时,才建议使用git cherry-pick

相关文章:

  • 3D 视觉赋能仓储精准高效:ID Logistics 与 Stereolabs 的创新合作之旅
  • 替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
  • golang channel源码
  • goland做验证码识别时报“undefined: gosseract.NewClient”
  • GitHub SSH连接终极解决方案
  • FFmpeg 硬核指南:从底层架构到播放器全链路开发实战 基础
  • 字符串系列一>最长回文子串
  • ValueError: model.embed_tokens.weight doesn‘t have any device set
  • 6TOPS算力NPU加持!RK3588如何重塑8K显示的边缘计算新边界
  • 深入浅出 Multi-Head Attention:原理 + 例子 + PyTorch 实现
  • 研0大模型学习(第四、五天)
  • 武林秘籍之INSERT篇:一键插入,笑傲数据库
  • 数据分析处理库Pandas常用方法汇总
  • 极狐GitLab 项目和群组的导入导出速率限制如何设置?
  • 论文阅读--Orient Anything
  • spring注解@Transactional会回滚哪些异常
  • 供应链项目技术实现方案,供应链详细设计方案书,采购管理,财务管理(Word原件)
  • [Vue3]动态引入图片
  • L2-002 链表去重
  • MATLAB 控制系统设计与仿真 - 36
  • 人民日报读者点题·共同关注:今天,我们需要什么样的企业家?
  • 十四届全国政协教科卫体委员会副主任杨小伟被查
  • 杭州银行董秘谈稳股价:做好经营工作是基本盘,降低外方股东撤资对股价的影响
  • 用人单位不能因女职工怀孕调岗降薪,两部门发布典型案例
  • 上海是他永远倾心的城市,“黄永玉新作”在沪展出
  • 东鹏饮料一季度净利增近五成,电解质饮料收入增超两倍