如何从已删除且合并到Master的远程分支Git Cherry-pick提交?
解决从已合并删除的分支提取特定提交的问题
一、从Master分支追溯目标提交
因为Branch2已合并到Master,其所有提交的变更都包含在Master的合并提交中,可通过以下步骤定位目标提交的哈希:
- 列出Master分支的提交历史,找到合并Branch2的提交(即图示中的K):
git log --oneline Master - 查看该合并提交的父提交,其中一个是Branch2的最后提交G:
输出的两个哈希里,对应Branch2分支的那个就是G的哈希git show <K的哈希值> --pretty=format:"%P" - 从G往前追溯3个提交,即可找到?, E, F:
记录这三个提交的哈希值备用git log --oneline <G的哈希值>~3..<G的哈希值>
二、在Branch1上cherry-pick目标提交
切换到Branch1分支,按提交先后顺序(从最早的?到最晚的F)执行cherry-pick:
git checkout Branch1 git cherry-pick <?的哈希值> git cherry-pick <E的哈希值> git cherry-pick <F的哈希值>
- 若遇到冲突,手动解决文件冲突后,执行
git cherry-pick --continue继续操作 - 若想放弃当前cherry-pick流程,执行
git cherry-pick --abort
三、备选:通过全局reflog查找本地痕迹
如果本地曾经拉取过Branch2,可查看全局reflog寻找相关记录:
git reflog
在输出中搜索包含Branch2的条目,找到对应的提交哈希后,再通过git log追溯该哈希的历史,提取目标提交
内容的提问来源于stack exchange,提问作者Bo Beep
相关产品推荐
相关产品推荐

