在 Git 中,合并"某些特定的 Commits"而不是合并整个分支的操作被称为 Cherry-Pick(优选/摘取)。
以下是专门为你准备的 Android Studio Cherry-Pick 操作指南。
Android Studio Git Cherry-Pick 操作指南
场景描述
假设你正在 release 分支(目标分支)上工作,需要把 dev 分支(源分支)上的 某一个或几个特定的 Bug 修复提交 合并过来,但不想合并 dev 上的其他未完成功能。
核心步骤概览
- 切换 到目标分支(接收代码的分支)。
- 在 Git 记录中 筛选 出源分支。
- 选中 需要的 Commit 并执行 Cherry-Pick。
- 处理可能出现的 冲突。
- Push 到远程仓库。
详细图文步骤
第一步:切换到目标分支
首先,确保当前 Android Studio 的工作环境是在你想要合并进代码的那个分支上。
- 操作 :点击右下角的分支名称,选择目标分支(例如
master或release),点击 Checkout。
第二步:打开 Git 历史记录
找到 Android Studio底部的 Git 标签页(旧版本可能叫 Version Control)。
- 操作 :点击底部的 Git 选项卡,确保左侧选中了 Log 面板。
第三步:查找源分支的 Commits
你需要查看包含那几个 Commit 的源分支历史。
- 在 Git Log 面板的顶部工具栏中,找到分支过滤器(通常显示为
Head或Current Branch)。 - 点击它,选择包含你想要代码的源分支 (例如
feature/login-fix)。- 注意:此时不要 Checkout 过去,只是在 Log 里查看它的历史。
- 现在列表中显示的就是源分支的提交记录了。
第四步:执行 Cherry-Pick
- 在列表中找到你想要合并的那一个(或按住
Ctrl/Command键多选几个)Commit。 - 右键点击 选中的 Commit。
- 在弹出的菜单中选择 Cherry-Pick 。

提示:Android Studio 会尝试自动将这些 Commit 的改动应用到你当前所在的分支,并自动生成新的 Commit。
第五步:处理冲突(如果有)
如果运气好,操作会直接完成,你会看到提示 "Cherry-pick successful"。
如果修改的文件在两个分支都有变动,会弹出 Merge Conflicts 窗口。
- 在冲突列表中,双击文件名打开合并视图。
- 左侧 是你当前分支的代码,右侧 是你要合并进来的代码,中间是最终结果。
- 点击
>>或<<箭头来决定保留哪部分代码。 - 处理完所有冲突后,点击 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 输入命令:
- 切换到目标分支:
git checkout release - 执行 Cherry-Pick (需要知道 commit 的 hash 值,如
a1b2c3d):
git cherry-pick a1b2c3d - 如果没冲突,直接 Push 即可。