Как я могу отрубить верхушку ветки и положить ее в другое место? - PullRequest
0 голосов
/ 05 декабря 2018

Я был на ветке development и создал новую ветку feature1.Я написал код для функции 1, был счастлив и решил начать работу над функцией 2. Поэтому я создаю новую ветку feature2 и делаю один коммит.о нет!Теперь моё дерево выглядит так:

dev <- . <- . <- feature1 <- feature2

Но feature1 и feature2 должны иметь ответвления от dev, например:

dev <- . <- . <- feature1
 ^
  \--- feature2

Как мне достичьэтот результат?Я пробовал различные формы git rebase всю ночь и не могу получить никакой радости.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Это можно сделать, сначала создав новую ветку:

git checkout -b feature2 dev

Затем следует вишня:

git cherry-pick feature1

Затем вернитесь к старой ветке и удалите коммит изтам:

git checkout feature1
git reset @^ --hard
0 голосов
/ 05 декабря 2018

Если предположить, что ветви названы так, как показано, команда rebase должна выглядеть следующим образом:

git rebase feature1 feature2 --onto dev

Один синтаксис для git rebase:

git rebase <upstream> <branch> --onto <newbase>

Если <branch> былоуказано, Git сначала делает git checkout <branch>.После этого он вычисляет базовый коммит между <upstream> и текущим извлеченным ответвлением.В нашем случае feature1 сам по себе является базовым коммитом, поскольку его предком является feature2.Затем Git возьмет все коммиты текущей извлеченной ветки вплоть до этого базового коммита и применит их к <newbase>.

0 голосов
/ 05 декабря 2018

Один вариант:

git checkout feature2
git rebase -i dev
# Delete all commits between 'dev' and feature2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...