Git создать ветку от мастера и перебазировать сверху - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть следующий репозиторий

A-B-C-D-E-F-G-H-I-J-K-L

И я хочу сделать:

A-B-C-D-E-F-G-H-I-J-K-L
   \
    C-D-E-F-G-H

И переместить новую ветку поверх мастера

A-B-C-D-E-F-G-H-I-J-K-L
                       \
                        C-D-E-F-G-H

Так что я did:

checkout B
checkout -b new-branch
cherry-pick C D E F G H
// so far it what i want
rebase new-branch master
// now I'm back in master like I did nothing

Не уверен, как этого добиться.

// EDIT

Commit I - это Revert from github UI, поэтому он фиксирует C-D-E-F-G-H squashed. все вместе. (Или I - это фиксация слияния, а J - возвратная фиксация.)

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Попробуйте выбрать диапазон желаемых коммитов напрямую от мастера.

git cherry-pick C..H
0 голосов
/ 07 февраля 2020

Если вы хотите зафиксировать C, D, E, F, G, H в своей собственной ветви без I, J, K и L, вы должны сделать это:

git checkout H
git checkout -b new-branch

После добавления еще несколько коммитов в новой ветке, ваша история будет выглядеть так:

master:    A-B-C-D-E-F-G-H-I-J-K-L
                          \
new-branch:                M-N-O

После того, как вы поработали над новой веткой и получили несколько коммитов, вы можете использовать rebase, чтобы воспроизвести разные коммиты поверх мастер, как это:

git checkout new-branch
git rebase master

Это сделало бы вашу историю выглядеть так:

master:    A-B-C-D-E-F-G-H-I-J-K-L
                                  \
new-branch:                        M-N-O
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...