Mam problem z wykonaniem selekcji. Na moim komputerze lokalnym jestem obecnie w gałęzi „master”. Chcę wybrać najlepszy wybór w zatwierdzeniu z innej gałęzi o nazwie „zebra”. Gałąź „zebra” to gałąź zdalna.
Więc status git:
# On branch master
nothing to commit (working directory clean)
Ok, teraz próbuję wybrać najlepsze zatwierdzenie, które chcę:
git cherry-pick xyz
fatal: bad object xyz
gdzie "xyz" to sygnatura interesującego mnie commita, który wydarzył się na gałęzi "zebra".
Więc pierwsze oczywiste pytanie brzmi: dlaczego git nie może znaleźć commita, do którego się odwołuję? Szczerze mówiąc, nie rozumiem, jak to działa. Czy git przechowuje coś w rodzaju bazy danych zmian lokalnie w moim katalogu roboczym dla wszystkich innych gałęzi? Czy podczas wykonywania polecenia cherry-pick przeszukuje lokalną bazę danych, aby znaleźć zatwierdzenie, o którym mówię?
Ponieważ „zebra” to zdalna gałąź, pomyślałem, że nie mam lokalnie jej danych. Więc zmieniłem gałęzie:
git checkout zebra
Switched to branch 'zebra'
Więc teraz na moim komputerze lokalnym widzę, że pliki w katalogu poprawnie odzwierciedlają stan zebry. Przełączam się z powrotem na master, próbuję ponownie wybrać cherry-pick (mając nadzieję, że dane dotyczące zmian są teraz dostępne), ale mam ten sam problem.
Mam fundamentalne niezrozumienie tego, co się tutaj dzieje, każda pomoc byłaby świetna.