git Cherry-Pick合并分支上的某些commits-》Android studio

在 Git 中,合并"某些特定的 Commits"而不是合并整个分支的操作被称为 Cherry-Pick(优选/摘取)

以下是专门为你准备的 Android Studio Cherry-Pick 操作指南


Android Studio Git Cherry-Pick 操作指南

场景描述

假设你正在 release 分支(目标分支)上工作,需要把 dev 分支(源分支)上的 某一个或几个特定的 Bug 修复提交 合并过来,但不想合并 dev 上的其他未完成功能。

核心步骤概览

  1. 切换 到目标分支(接收代码的分支)。
  2. 在 Git 记录中 筛选 出源分支。
  3. 选中 需要的 Commit 并执行 Cherry-Pick。
  4. 处理可能出现的 冲突
  5. Push 到远程仓库。

详细图文步骤

第一步:切换到目标分支

首先,确保当前 Android Studio 的工作环境是在你想要合并进代码的那个分支上。

  • 操作 :点击右下角的分支名称,选择目标分支(例如 masterrelease),点击 Checkout

第二步:打开 Git 历史记录

找到 Android Studio底部的 Git 标签页(旧版本可能叫 Version Control)。

  • 操作 :点击底部的 Git 选项卡,确保左侧选中了 Log 面板。

第三步:查找源分支的 Commits

你需要查看包含那几个 Commit 的源分支历史。

  1. 在 Git Log 面板的顶部工具栏中,找到分支过滤器(通常显示为 HeadCurrent Branch)。
  2. 点击它,选择包含你想要代码的源分支 (例如 feature/login-fix)。
    • 注意:此时不要 Checkout 过去,只是在 Log 里查看它的历史。
  3. 现在列表中显示的就是源分支的提交记录了。

第四步:执行 Cherry-Pick

  1. 在列表中找到你想要合并的那一个(或按住 Ctrl/Command 键多选几个)Commit。
  2. 右键点击 选中的 Commit。
  3. 在弹出的菜单中选择 Cherry-Pick

提示:Android Studio 会尝试自动将这些 Commit 的改动应用到你当前所在的分支,并自动生成新的 Commit。

第五步:处理冲突(如果有)

如果运气好,操作会直接完成,你会看到提示 "Cherry-pick successful"。

如果修改的文件在两个分支都有变动,会弹出 Merge Conflicts 窗口。

  1. 在冲突列表中,双击文件名打开合并视图。
  2. 左侧 是你当前分支的代码,右侧 是你要合并进来的代码,中间是最终结果。
  3. 点击 >><< 箭头来决定保留哪部分代码。
  4. 处理完所有冲突后,点击 Apply

第六步:推送代码 (Push)

Cherry-Pick 成功后,这些改动已经变成了你本地分支上的新 Commit。

  • 操作 :按 Ctrl + Shift + K (Windows) 或 Cmd + Shift + K (Mac),或者点击菜单栏 Git -> Push,将变动推送到远程仓库。

常见问题 (Q&A)

Q: Cherry-Pick 后,Commit ID 会变吗?

A: 会变。虽然代码内容和提交信息(Message)是一样的,但在 Git 看来这是一个全新的提交,会生成一个新的 Hash 值。

Q: 如果我想合并一连串的 Commits 怎么办?

A: 在 Git Log 界面,你可以按住 Shift 键,点击第一个和最后一个 Commit 来进行范围选择,然后右键 Cherry-Pick。

Q: 我后悔了,怎么撤销刚才的 Cherry-Pick?

A: 如果还没有 Push,可以在 Git Log 中右键点击刚才生成的那个 Commit,选择 Undo Commit 或者 Reset Current Branch to Here... (选择上一个节点)。


附录:命令行方式 (备用)

如果你觉得 UI 操作卡住了,可以使用 Android Studio 下方的 Terminal 输入命令:

  1. 切换到目标分支:
    git checkout release
  2. 执行 Cherry-Pick (需要知道 commit 的 hash 值,如 a1b2c3d):
    git cherry-pick a1b2c3d
  3. 如果没冲突,直接 Push 即可。
相关推荐
Better Bench3 小时前
git与github协作开发的常用命令
git·github
灵感菇_3 小时前
Android Broadcast全面解析
android·广播·四大组件
byc3 小时前
Android 存储目录<内部存储,外部存储app专属,外部存储公共>
android·面试
RollingPin3 小时前
React Native与Flutter的对比
android·flutter·react native·ios·js·移动端·跨平台开发
刘大浪3 小时前
Android studio 开发将gradle 从c盘迁移至自定义盘
android·ide·android studio
装不满的克莱因瓶4 小时前
【2026最新最全】Android Studio安装教程
android·ide·flutter·app·android studio·移动端
2501_916008894 小时前
iOS 能耗检测的工程化方法,构建多工具协同的电量分析与性能能效体系
android·ios·小程序·https·uni-app·iphone·webview
柯南二号4 小时前
【大前端】【Android】获取手机的电池电量、充电状态
android
用户69371750013844 小时前
27.Kotlin 空安全:安全转换 (as?) 与非空断言 (!!)
android·后端·kotlin