小编典典

如何从远程分支中挑选?

all

我在挑选樱桃时遇到了麻烦。在我的本地机器上,我目前在我的“主”分支上。我想从另一个名为“zebra”的分支中挑选提交。“斑马”分支是一个远程分支。

所以git状态:

# On branch master
nothing to commit (working directory clean)

好的,现在我尝试挑选我想要的提交:

git cherry-pick xyz
fatal: bad object xyz

其中“xyz”是我感兴趣的提交的签名,它发生在分支“zebra”上。

所以第一个明显的问题是,为什么 git 找不到我引用的提交?老实说,我真的不明白这首先是如何工作的。对于所有其他分支,git
是否在我的工作目录中本地存储类似提交数据库之类的东西?执行cherry-pick 命令时,它是否会搜索本地数据库以找到我正在谈论的提交?

由于“斑马”是一个远程分支,我想我在本地没有它的数据。所以我切换了分支:

git checkout zebra
Switched to branch 'zebra'

所以现在在我的本地机器上,我可以看到目录中的文件正确地反映了斑马的状态。我切换回master,再次尝试挑选(希望提交数据现在可用),但我遇到了同样的问题。

我对这里发生的事情有一个根本的误解,任何帮助都会很棒。


阅读 68

收藏
2022-07-16

共1个答案

小编典典

由于“斑马”是一个远程分支,我想我在本地没有它的数据。

您是正确的,您没有正确的数据,但试图以错误的方式解决它。要从远程源本地收集数据,您需要使用git fetch. 当你这样做时,git checkout zebra你切换到该分支的状态是你最后一次获取的任何状态。所以先从远程获取:

# fetch just the one remote
git fetch <remote>
# or fetch from all remotes
git fetch --all
# make sure you're back on the branch you want to cherry-pick to
git cherry-pick xyz
2022-07-16