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 即可。
相关推荐
金融RPA机器人丨实在智能6 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿6 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc6 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20357 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106327 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
春日见7 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
vistaup7 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵7 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动7 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>7 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端