无需切换分支,如何从dev分支向master_copy分支cherry-pick提交?
无需切换分支将指定提交cherry-pick到目标分支
你可以通过两种安全方式实现需求,全程无需切换到dev或master_copy分支:
方法一:利用临时HEAD状态(适合当前分支工作区干净的场景)
如果当前master分支的工作区、暂存区均无未提交修改,可执行以下命令序列:
- 在当前
master分支的HEAD基础上,执行cherry-pick但不自动提交:git cherry-pick --no-commit <目标提交HASH> - 强制将
master_copy分支指向刚完成cherry-pick的临时HEAD:git branch -f master_copy HEAD - 将当前
master分支重置回cherry-pick前的状态,消除临时修改:git reset --hard HEAD@{1}
方法二:使用临时工作区(无任何限制,更安全)
如果当前master分支存在未提交修改,推荐用这种方法,完全不影响现有工作环境:
- 创建临时工作区,关联
master_copy分支(临时目录放在仓库外,避免污染):git worktree add -b temp_cherrypick ../temp_cherrypick_workspace master_copy - 在临时工作区中执行cherry-pick操作:
git -C ../temp_cherrypick_workspace cherry-pick <目标提交HASH> - 删除临时工作区,清理痕迹:
git worktree remove ../temp_cherrypick_workspace
注意事项
- 替换命令中的
<目标提交HASH>为dev分支上的目标提交哈希,也可以用相对位置快速获取,比如git rev-parse dev~1表示dev分支倒数第一个提交。 - 若cherry-pick出现冲突:方法一中需先解决冲突再执行后续步骤;方法二中进入临时工作目录解决冲突并完成提交后,再删除临时工作区。
内容的提问来源于stack exchange,提问作者Kot Psihopat
相关产品推荐
相关产品推荐

