Как я могу переместить последние несколько коммитов в мое git-репо в их собственную ветку с определенного исторического коммита? - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть это:

A -- B -- C -- D -- E -- F -- G  (master branch)

Где F и G - мои последние коммиты, а E - последний коммит из источника.

Что мне нужно, это сделать F и G вотдельная ветка, которая охватывает другие вопросы, но основанная на коммите B, оставляя это:

A -- B -- C -- D -- E  (master branch)
      \
       F -- G  (my new branch)

Причина в том, что коммит B помечен как стабильный релиз (используется в других системах, не поддерживаемых с помощью git)и мне нужно сделать патч для коммитов F и G против этого релиза.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011
git checkout B

git branch my_new_branch

git checkout my_new_branch

Это создает новый my_new_branch на B.Тогда вам нужно:

git cherry-pick F

git cherry-pick G

Обратите внимание, что [A-G] - это хэш-числа коммитов

2 голосов
/ 30 сентября 2011
git checkout B
git branch my_new_branch
git checkout my_new_branch
git cherry-pick F
git cherry-pick G

Но это создает только

A -- B -- C -- D -- E -- F -- G  (master branch)
      \
       F -- G  (my new branch)

теперь вам нужно сбросить мастер историю:

git checkout master
git reset --hard HEAD^^

это составит

A -- B -- C -- D -- E  (master branch)
      \
       F -- G  (my new branch)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...