如何从GitHub挑选未合并提交?解决git cherry-pick对象错误
解决Git Cherry-Pick时的"fatal: bad object"错误
这个报错其实很好理解——你的本地仓库里根本没有这个提交的副本!你克隆的是原仓库,但这个提交属于一个尚未合并的PR,默认情况下本地只会同步原仓库的主分支(比如main或master),并没有拉取这个PR分支的内容,自然找不到对应的提交哈希。
下面是一步步的解决方法:
1. 拉取PR对应的分支到本地
GitHub提供了便捷的方式直接拉取任意PR的分支内容,执行这条命令:
git fetch origin pull/17/head:pr-17
这条命令的意思是:从远程origin仓库拉取PR#17的头部分支,并在本地创建一个名为pr-17的分支来保存它。执行后,你本地就有了这个PR里所有提交的副本,包括你要的那个b9f49977bac269be90807dc27c9931517c84ff15提交。
2. 执行Cherry-Pick命令
现在本地已经有了目标提交,再重新运行你之前的命令就可以了:
git cherry-pick b9f49977bac269be90807dc27c9931517c84ff15
额外小技巧
如果这个PR里只有你需要的这一个提交,也可以跳过创建本地分支的步骤,直接拉取后cherry-pick:
git fetch origin pull/17/head git cherry-pick FETCH_HEAD
FETCH_HEAD会指向你刚刚拉取的远程分支的最后一个提交,正好是你要的这个提交的话就可以直接用。
内容的提问来源于stack exchange,提问作者StevieD
相关产品推荐
相关产品推荐

