所以git状态:
# On branch master
nothing to commit (working directory clean)
好的,现在我尝试挑选我想要的提交记录:
git cherry-pick xyz
fatal: bad object xyz
“xyz”是我感兴趣的分支“zebra”上发生的提交的签名。
那么首先显而易见的问题是,为什么git找不到我引用的提交?说实话,我不太理解这是如何起作用的。Git是否在我的工作目录中为所有其他分支存储类似于提交的数据库?执行cherry-pick命令时,它会去搜索本地数据库以找到我所说的提交吗?
由于“zebra”是一个远程分支,我想我没有它的本地数据。所以我切换了分支:
git checkout zebra
Switched to branch 'zebra'
现在,在我的本地机器上,我可以看到目录中的文件正确地反映了斑马的状态。我切换回主分支,尝试再次挑选(希望现在可用提交数据),但是我仍然遇到同样的问题。
我对这里发生的事情有根本性的误解,任何帮助都会很棒。
$git fetch
然后再试一次。 - Mauricio Gracia Gutierrezgit fetch -all
和git pull
将会有所帮助。有时我们的本地分支与远程不同步,应该使用git status
进行检查。执行git pull
可以解决问题,然后再进行 cherry pick。 - akshay_sushir