Перемещение коммитов из одной ветки в другую - PullRequest
18 голосов
/ 08 ноября 2010

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

Вот как теперь выглядит мой репозиторий:

a [master] [remotes/origin/master]
|
b
|
c
|
d (merge branch 'develop')
|\
| \
|  e [develop] [remotes/origin/develop]
|  |
q  f
|  |
r  g

И вот как я хочу, чтобы это выглядело так:

Z [master] [remotes/origin/master]
|\
| \
|  A
|  |
|  B
|  |
d  C
|\ |
| \|
|  e [develop] [remotes/origin/develop]
|  |
q  f
|  |
r  g

Могу ли я получить помощь по этому вопросу?Я думаю, что это работа для ребазинга, но я не совсем уверен, как это сделать.

1 Ответ

27 голосов
/ 08 ноября 2010

Вот вы:

# move cba onto e
git branch foo
git rebase --onto <SHA1-e> <SHA1-d> foo

# rewind master to d
git checkout master
git reset --hard <SHA1-d>

# merge
git merge foo

Возможно, вы захотите выбрать более описательное имя ветки, чем foo, так как оно будет записано в сообщении о слиянии для Z.

...