Tôi đang gặp khó khăn khi thực hiện một lựa chọn anh đào. Trên máy cục bộ của tôi, tôi hiện đang ở chi nhánh "chính chủ" của mình. Tôi muốn chọn cherry trong một cam kết từ một chi nhánh khác, được đặt tên là "ngựa vằn". Nhánh "ngựa vằn" là một nhánh từ xa.
Vì vậy, trạng thái git:
# On branch master
nothing to commit (working directory clean)
Ok, bây giờ tôi cố gắng chọn cherry mà tôi muốn:
git cherry-pick xyz
fatal: bad object xyz
trong đó "xyz" là chữ ký của cam kết mà tôi quan tâm, điều đó đã xảy ra trên nhánh "ngựa vằn".
Vì vậy, câu hỏi rõ ràng đầu tiên là, tại sao git không thể tìm thấy cam kết mà tôi đang tham khảo? Tôi thực sự không hiểu làm thế nào điều này hoạt động ở nơi đầu tiên phải trung thực. Có phải git lưu trữ một cái gì đó giống như một cơ sở dữ liệu của các xác nhận cục bộ trong thư mục làm việc của tôi, cho tất cả các chi nhánh khác không? Khi thực hiện lệnh cherry-pick, nó có đi và tìm kiếm cơ sở dữ liệu cục bộ đó để tìm cam kết mà tôi đang nói đến không?
Vì "ngựa vằn" là một nhánh từ xa, tôi đã nghĩ rằng tôi không có dữ liệu của nó tại địa phương. Thế là tôi chuyển ngành:
git checkout zebra
Switched to branch 'zebra'
Vì vậy, bây giờ ở đây trên máy cục bộ của tôi, tôi có thể thấy rằng các tệp trong thư mục phản ánh chính xác trạng thái của ngựa vằn. Tôi quay trở lại chủ, thử chọn lại cherry (hy vọng dữ liệu cam kết có sẵn ngay bây giờ), nhưng tôi gặp vấn đề tương tự.
Tôi đã có một sự hiểu lầm cơ bản về những gì đang diễn ra ở đây, bất kỳ trợ giúp sẽ là tuyệt vời.