ฉันมีปัญหากับการเลือกเชอร์รี่ ในเครื่องของฉันฉันอยู่ในสาขา "master" ของฉัน ฉันต้องการเชอร์รี่ที่เลือกจากสาขาอื่นที่ชื่อว่า "ม้าลาย" สาขา "ม้าลาย" เป็นสาขาระยะไกล
ดังนั้นสถานะคอมไพล์:
# On branch master
nothing to commit (working directory clean)
ตกลงตอนนี้ฉันพยายามที่จะเลือกความมุ่งมั่นของเชอร์รี่:
git cherry-pick xyz
fatal: bad object xyz
ที่ "xyz" เป็นลายเซ็นของความมุ่งมั่นที่ฉันสนใจซึ่งเกิดขึ้นในสาขา "ม้าลาย"
ดังนั้นคำถามแรกที่ชัดเจนคือทำไมไม่สามารถหาคำมั่นสัญญาที่ฉันอ้างอิงได้ ฉันไม่เข้าใจจริงๆว่าวิธีนี้ทำงานในสถานที่แรกที่จะซื่อสัตย์ คอมไพล์เก็บบางสิ่งเช่นฐานข้อมูลของคอมมิทไว้ในไดเร็คทอรี่สำหรับทำงานของสาขาอื่นหรือไม่? เมื่อรันคำสั่ง cherry-pick มันจะไปและค้นหาฐานข้อมูลท้องถิ่นเพื่อค้นหาคำสั่งที่ฉันกำลังพูดถึงหรือไม่?
เนื่องจาก "zebra" เป็นสาขาระยะไกลฉันจึงคิดว่าฉันไม่มีข้อมูลในเครื่อง ดังนั้นฉันจึงเปลี่ยนสาขา:
git checkout zebra
Switched to branch 'zebra'
ดังนั้นตอนนี้ที่นี่ในเครื่องท้องถิ่นของฉันฉันเห็นได้ว่าไฟล์ในไดเรกทอรีแสดงสถานะของม้าลายอย่างถูกต้อง ฉันสลับกลับไปยังต้นแบบลองเลือกเชอร์รี่อีกครั้ง (หวังว่าข้อมูลการส่งจะพร้อมใช้งานในขณะนี้) แต่ฉันได้รับปัญหาเดียวกัน
ฉันมีความเข้าใจผิดขั้นพื้นฐานเกี่ยวกับสิ่งที่เกิดขึ้นที่นี่ความช่วยเหลือใด ๆ จะดีมาก