在GitHub执行Squash and Merge后,如何找到squash commit以cherry-pick?
解决方案:一次性cherry-pick squash合并提交
完全可以通过找到当初Squash and Merge生成的单一提交,用一次cherry-pick完成所有变更的重新应用,步骤如下:
1. 定位squash合并提交的哈希值
- GitHub页面查找:打开对应的PR页面,在「Conversation」标签下找到合并记录(通常显示为「Squash and Merge into main」),点击该记录就能看到生成的squash提交详情,复制其完整哈希值(或短哈希)。
- 本地Git日志查找:切换到main/master分支后,执行
git log --oneline,通过PR标题(squash提交的默认信息就是PR标题+编号,比如「优化支付流程 #456」)搜索目标提交,找到对应的哈希值。
2. 准备本地分支
确保本地main/master分支是最新状态:
git checkout main git pull origin main
3. 执行cherry-pick
用复制的哈希值执行cherry-pick:
git cherry-pick <squash-commit-hash>
- 如果遇到冲突,手动解决代码冲突后,执行
git add .,再运行git cherry-pick --continue完成操作; - 若要终止cherry-pick,执行
git cherry-pick --abort。
补充说明
当初的回退操作(比如git revert)只是生成了一个反向提交,并不会删除原squash合并提交,因此它依然存在于仓库的提交历史中,可以正常被cherry-pick引用。
内容的提问来源于stack exchange,提问作者Stefanie Gauss
相关产品推荐
相关产品推荐

