Я разветвил не ту ветку, как мне перенести изменения в правильную ветку? - PullRequest
0 голосов
/ 26 сентября 2019

У нас есть ветвь develop и ветвь release.

Меня попросили внести изменение, но позже мне сказали, что это должно быть исправление ипоэтому я должен был разветвляться от ветви release.

Текущая ситуация такова (я сам нарисовал диаграмму):

git branching

Я действительно не хочу терять всю мою работу, которая в настоящее время находится на моем feature-branch.Как мне переместить все мои изменения в feature-branch, чтобы они сидели в новой ветви , но , которая была разветвлена ​​от release ветви?

Что я пробовал?

Я пытался использовать rebase --onto, но я получил следующую ошибку:

$ git rebase --onto release-branch feature / 1 feature/ 1a

fatal: fatal: нет такой ветки / commit 'feature / 1a'

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Чтобы дублировать коммиты от feature и только их (без коммитов от develop до или после feature разветвления из него), вы можете использовать следующие команды:

git checkout -B feature release      # Checkout `release` and bring `feature` along
git cherry-pick develop..feature@{1} # Retrieve commits from `feature` which are not on `develop`
1 голос
/ 26 сентября 2019

Я думаю, что лучший способ сделать это - переместить вашу ветку Feature в Release.Команда git rebase довольно гибкая.Вы можете указать, куда перемещать вашу ветку и сколько перемещать вашу ветку.

Эта команда переместит ветвь Feature в ветку из Release, начиная с коммита после ветки Develop:

git rebase --onto Release Develop Feature

или альтернативно:

git checkout Feature
git rebase --onto Release Develop

Нет необходимости создавать новую ветку или удалять свою оригинальную.

1 голос
/ 26 сентября 2019

Попробуйте следующие команды (псевдокод: примените правильное имя)

git checkout release
git rebase feature

После этих команд вы будете работать с feature веткой в ​​release ветке.

Однако, если develop принял коммиты после того, как ветка feature была извлечена, эти коммиты не будут присутствовать ни в feature, ни в release.

Вам нужно будет перебазировать вашу ветку releaseПовторите мастер, чтобы иметь их в release ветке.Запустив:

git checkout release
git rebase develop

PS Вот ссылка, которая описывает команду rebase https://git -scm.com / docs / git-rebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...