macOS 上 Git 拣选操作与 Linux/Windows 完全一致,需先切换至目标分支、拉取最新代码并确保工作区干净,再通过 git cherry-pick 命令指定提交哈希执行拣选,冲突时手动解决并 git add 后 --continue,或 --abort 放弃。
在 macos 上用 git 拣选(cherry-pick)其他分支的提交,和 linux 或 windows 的操作完全一致——git 命令本身跨平台,macos 终端(terminal 或 iterm2)直接支持所有标准 git 功能。关键不是系统差异,而是操作逻辑是否清晰、步骤是否到位。
确认目标分支并保持干净工作区
拣选前必须确保当前分支处于可提交状态:
- 先切换到你想把改动合入的目标分支,比如
main或release/v2.3:git checkout main - 拉取最新代码,避免后续冲突或覆盖:
git pull origin main - 检查工作区是否干净(无未提交修改):
git status—— 如果显示 “nothing to commit”,说明可以继续;如果有改动,需先commit或stash
找到要拣选的提交哈希值
进入源分支(如 feature/login),查看提交历史,定位目标提交:
git checkout feature/login-
git log --oneline -n 10—— 显示最近 10 条简洁记录,例如:d671a5b feature: add token refresh logic316e1b3 fix: prevent null pointer in auth handler - 复制你需要的那行开头的短哈希(如
d671a5b),它就是 cherry-pick 的输入依据
执行 cherry-pick 并处理常见情况
回到目标分支后,按需选择以下方式之一:
-
单个提交:
git cherry-pick d671a5b -
多个非连续提交(顺序执行):
git cherry-pick d671a5b 316e1b3 a1b2c3d -
一段连续提交(不含起点):
git cherry-pick d671a5b..a1b2c3d→ 拣选d671a5b之后、a1b2c3d之前的所有提交 -
一段连续提交(含起点):
git cherry-pick d671a5b^..a1b2c3d - 想注明来源(尤其用于公开分支间修复同步)可加
-x参数:git cherry-pick -x d671a5b,会自动在提交信息末尾追加(cherry picked from commit d671a5b...)
遇到冲突时怎么继续
如果文件有冲突,Git 会暂停并提示你手动解决:
- 打开标红的冲突文件(如
auth.js),按 Git 标记的<<<<<< HEAD/=======/>>>>>>区段编辑合并内容 - 保存后标记为已解决:
git add auth.js - 继续拣选流程:
git cherry-pick --continue - 若中途决定放弃整个操作:
git cherry-pick --abort(会退回原状,不留痕迹)


















