2014-12-31 4 views
0

После того, как вы выбрали проект за последний год, мне удалось поместить себя в бит git bind. Вот что произошло:Git rebase to old commit

  1. Начальная производственная версия. Мы назовем это A

  2. Сделано несколько важных изменений, которые никогда не заканчивались. Случайно передал это ветке master. Код никогда не поступал в производство. Мы назовем это commit B.

  3. Прошло несколько месяцев, и мне нужно сделать некоторые исправления на производстве. Используется «git checkout A .», чтобы вернуться к фиксации A, внести изменения в исправление, а затем зафиксировать на главном ветви в верхней части B как C.

  4. Хотите завершить функции с фиксации B. Используйте «git checkout B -b featureBranch», чтобы получить новую ветку со всеми моими незавершенными функциями от фиксации B. Однако ни одно из моих исправлений от C не включено.

Если я запускаю «git rebase master», все мои C совершить исправления получить применяются, но я теряю изменение от совершения B.

Как внести изменения в мои C изменений, не потеряв мои B?

+0

Просьба уточнить с помощью диаграммы. –

ответ

3

Самый простой способ будет вишневого выбор (git cherry-pick):

git checkout featureBranch 
git cherry-pick C 

Это будет работать, если позже, featureBranch будет просто заменить текущую master.