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 即可。
相关推荐
do better myself20 小时前
网站源码如何部署和加入GIT仓库的
git
爱学英语的程序员1 天前
Git 提交 LF will be replaced by CRLF the next time Git touches it 报错
git
恋猫de小郭1 天前
Android 上为什么主题字体对 Flutter 不生效,对 Compose 生效?Flutter 中文字体问题修复
android·前端·flutter
三少爷的鞋1 天前
不要让调用方承担你本该承担的复杂度 —— Android Data 层设计原则
android
李李李勃谦1 天前
Flutter 框架跨平台鸿蒙开发 - 创意灵感收集
android·flutter·harmonyos
qq_339191141 天前
服务器git pull每次都要输入密码,linux 设置git登录,linux设置git只输入一次账户密码
git
fengci.1 天前
ctfshow其他(web396-web407)
android
JJay.1 天前
Android 17 大屏适配变化解
android
TE-茶叶蛋1 天前
结合登录页-PHP基础知识点解析
android·开发语言·php