Git: создал новую ветку из неправильной ветви - PullRequest
31 голосов
/ 08 декабря 2011

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

git checkout -b new-feature develop

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

git checkout develop
git merge new-feature

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

Есть ли способ переключить родителя new-feature2 на develop?

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

Ответы [ 4 ]

40 голосов
/ 08 декабря 2011

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

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

или сделать это «вручную», используя вишневый кир

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
9 голосов
/ 06 января 2012

Вы видели интерактивный ребаз?

git rebase -i develop

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

4 голосов
/ 08 декабря 2011

как насчет создания патча, оформления заказа на ветку develop и применения патча?

git checkout new-feature2

git format-patch new-feature

git checkout develop

git am name-of-the-patch.patch
1 голос
/ 08 декабря 2011

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

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