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 即可。
相关推荐
muddjsv4 小时前
Git 命令全解析:分类、常用命令与实战指南
git
郭优秀的笔记5 小时前
html鼠标悬浮提示功能
android·javascript·html
冬奇Lab5 小时前
Android 15存储子系统深度解析(一):Vold与存储管理框架
android·车载系统·系统架构
我命由我123455 小时前
Android Studio - Android Studio 中的 View Live Telemetry
经验分享·学习·android studio·学习方法·android jetpack·android-studio·android runtime
得一录5 小时前
Android 方向控制控件
android
美狐美颜SDK开放平台5 小时前
跨平台开发实战:直播美颜sdk动态贴纸在 Android / iOS / HarmonyOS 的落地方案
android·ios·harmonyos·美颜sdk·直播美颜sdk·视频美颜sdk·美颜api
2501_916008895 小时前
在不越狱前提下导出 iOS 应用文件的过程,访问应用沙盒目录,获取真实数据
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915106325 小时前
Android和IOS 移动应用App图标生成与使用 Assets.car生成
android·ios·小程序·https·uni-app·iphone·webview
莫陌尛.5 小时前
git版本提交后撤销
git
灵感菇_5 小时前
深入解析 Android事件分发机制
android·ui