Git: создал новую ветвь из неправильной ветви

Я обычно создаю новую ветку из develop

git checkout -b new-feature develop

затем после последнего коммита я сливаюсь обратно в develop

git checkout develop
git merge new-feature

но на этот раз я создал new-feature2 brach от new-feature и теперь я не могу слиться в develop.

есть ли способ, чтобы перейти new-feature2С родителя develop?

(файлы, над которыми я работал, были той же версии, что и в develop таким образом, это не должно требовать слияния.)

4 ответов


вы можете перебазировать свою функцию на основную базу:

git checkout new-feature2  
git rebase --onto develop new-feature new-feature2
# rebase the stuff from new-feature to new-feature2 onto develop branch

или сделать это "вручную" с помощью cherry pick

git checkout develop
git log --oneline new-feature..new-feature2 
# for every commit call:
git cherry-pick <commit-id> # note, newer versions of cherry-pick allow multiple commits at once

вы видели интерактивные перебазирования?

git rebase -i develop

- довольно простое решение–оно покажет все ваши коммиты из этой ветви. Просто удалите строки "pick" из нежелательной ветви.


Как насчет создания патча, проверка на develop ветвь и применить патч?

git checkout new-feature2

git format-patch new-feature

git checkout develop

git am name-of-the-patch.patch

вы также можете использовать git diff и git apply:

git diff new-feature..new-feature2 | git apply -