У меня следующая ситуация, которая отличается от this .
Вот мой локальный репо:
$ git branch
branch1
...
branchk
master
* this-branch-where-fix-should-happen
Я хочу применить коммит, который толькосуществует в ветке upstream:staging
.
Я пытался получить восходящий поток в определенной ветке
$ git fetch upstream staging:staging
From github.com:<org>/<repo>
* [new branch] staging -> staging
Новый вывод из branch
.
$ git branch
branch1
...
branchk
master
staging
* this-branch-where-fix-should-happen
Теперь пытаюсь выбрать вишню в fix-branch
:
$ git cherry-pick -x <sha-1>
fatal: bad object <sha-1>
Есть ли правильный способ выбора вишни в этой ситуации?Или я делаю это совершенно неправильно?
Редактировать: Найти проблему и исправить ее
По указанию Тима Бигелайзена
Получение вверх по течению
$ git fetch upstream
В этом и была моя ошибка: я получал номер коммита через сайт github, однако на самом деле это было <sha-1>
для слияния.Чтобы получить правильный номер коммита:
$ git log --pretty=oneline --grep="<some-info-about-the-commit>" upstream/staging
Я использовал --grep="#pull-request-number"
и получил правильный идентификатор коммита.
<correct-sha-1> PR description (#PR-number)
Теперь пытаюсь выбрать вишню в fix-branch
:
$ git cherry-pick -x <correct-sha-1>
И это работает!