Как черри подобрать геррит со всеми зависимостями? - PullRequest
0 голосов
/ 20 января 2020

Допустим, есть несколько герритов с зависимостями:

A <- B <- C

(C зависит от B, а B зависит от A)

Если я просто выбираю вишню C, это не будет работать, потому что зависимости (A и B) не будут выбраны вишней.

Как я могу легко вишня выбрать C так, чтобы в моем локальном дереве, все его зависимости будут применены автоматически в одной команде ?

1 Ответ

0 голосов
/ 21 января 2020

Если все из A, B и C были отправлены, вы можете рассмотреть git merge:

git merge C --no-ff
# merge commit does not invoke the hook commit-msg, so
# if your Gerrit requires Change-Id and you want to push
# the merged commits for review, use amend-commit to generate it
git commit --amend

Если хотя бы один из них не был представлен, используйте git cherry-pick вместо:

git cherry-pick HEAD..C --no-merges

HEAD..C эквивалентно всем коммитам, достижимым с C и новым для текущей ветви. --no-merges исключает коммиты слияния между ними. В идеальном случае коммиты слияния не связаны с конфликтами, и вам не нужно их выбирать. Если вы действительно хотите выбрать коммит слияния, это немного раздражает, так как вы должны указать, какой родитель будет основным.

Если C и его предки еще не доступны в локальной сети, вы сначала нужно получить их:

git fetch origin <refspec_of_C>

Вы можете найти ссылку c из C на странице C. Это ссылка вроде refs/changes/xx/xxxxx/x. Если C было отправлено на ветку, вы можете вместо этого получить ветку.

...