Перемещение происходит от одной ветки к другой
Я совершил кучу изменений на главной ветке моего репозитория 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
Могу ли я помочь? Я думаю, что это работа для rebase, но я не совсем уверен, как это произошло.
Ответы
Ответ 1
Здесь вы находитесь:
# 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.