チェリーピックを実行するのに問題があります。私のローカルマシンでは、現在「マスター」ブランチにいます。「zebra」という名前の別のブランチからのコミットをチェリーピックしたいと思います。「ゼブラ」ブランチはリモートブランチです。
したがって、git status:
# 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'
これで、ローカルマシン上で、ディレクトリ内のファイルがzebraの状態を正しく反映していることがわかります。マスターに戻り、もう一度チェリーピックを試みます(コミットデータが利用可能になることを期待しています)が、同じ問題が発生します。
私はここで何が起こっているのかについて根本的な誤解を持っています、どんな助けも素晴らしいでしょう。