Estou tendo problemas para executar uma escolha de cerejeira. Na minha máquina local, atualmente estou no meu ramo "mestre". Quero escolher cereja em um commit de outro ramo, chamado "zebra". O ramo "zebra" é um ramo remoto.
Então, status git:
# On branch master
nothing to commit (working directory clean)
Ok, agora eu tento escolher o commit que eu quero:
git cherry-pick xyz
fatal: bad object xyz
onde "xyz" é a assinatura do commit no qual estou interessado, que aconteceu no ramo "zebra".
Portanto, a primeira pergunta óbvia é: por que o git não consegue encontrar o commit que estou referenciando? Eu realmente não entendo como isso está funcionando, em primeiro lugar, para ser honesto. O git armazena algo como um banco de dados de confirmações localmente no meu diretório de trabalho, para todos os outros ramos? Ao executar o comando cherry-pick, ele pesquisa o banco de dados local para encontrar o commit que estou falando?
Como "zebra" é uma ramificação remota, eu estava pensando que não tinha seus dados localmente. Então eu troquei ramos:
git checkout zebra
Switched to branch 'zebra'
Portanto, agora na minha máquina local, posso ver que os arquivos no diretório refletem o estado da zebra corretamente. Volto ao master, tento escolher novamente (esperando que os dados de confirmação estejam disponíveis agora), mas recebo o mesmo problema.
Eu tenho um mal-entendido fundamental sobre o que está acontecendo aqui, qualquer ajuda seria ótima.