Tengo problemas para realizar una selección de cereza. En mi máquina local, actualmente estoy en mi rama "maestra". Quiero elegir un compromiso de otra rama, llamada "cebra". La rama "cebra" es una rama remota.
Entonces git status:
# On branch master
nothing to commit (working directory clean)
Ok, ahora trato de elegir el commit que quiero:
git cherry-pick xyz
fatal: bad object xyz
donde "xyz" es la firma de la confirmación que me interesa, que sucedió en la rama "zebra".
Entonces, la primera pregunta obvia es, ¿por qué git no puede encontrar la confirmación a la que me refiero? Realmente no entiendo cómo funciona esto en primer lugar para ser honesto. ¿Git almacena algo así como una base de datos de confirmaciones localmente en mi directorio de trabajo, para todas las demás ramas? Al ejecutar el comando cherry-pick, ¿va y busca en esa base de datos local para encontrar la confirmación de la que estoy hablando?
Como "zebra" es una rama remota, estaba pensando que no tengo sus datos localmente. Entonces cambié ramas:
git checkout zebra
Switched to branch 'zebra'
Así que ahora aquí en mi máquina local, puedo ver que los archivos en el directorio reflejan el estado de la cebra correctamente. Vuelvo a master, intento volver a elegir (esperando que los datos de confirmación estén disponibles ahora), pero me sale el mismo problema.
Tengo un malentendido fundamental de lo que está sucediendo aquí, cualquier ayuda sería genial.