2013-09-25 2 views
1

Я создал новую функцию. Я отправил его для проверки кода, меня попросили разделить его на две части и затем повторно отправить. Первая часть, которую я сейчас завершил, - это новый API. Второй частью будет интеграция этого нового API в существующий код. Вот что мой мерзавец репо выглядит в настоящее время:Как восстановить изменения от предка, которые были удалены в дочерней ветке через Git?

o-o-A-o-o-o-o-o-o-o-o-o-o-B 
     |      | 
    Original   API with Feature 
    Feature  Integration Removed 

A является филиалом я изначально работал. B - это ветвь, которую я создал, в которой я удалил код интеграции и просто оставил API для новой функции.

Теперь я хочу восстановить интеграцию. Большинство промежуточных шагов между A и B - это код, который я хочу вернуть.

Чтобы усложнить проблему, API изменил бит к моменту завершения B. Я в основном хочу восстановить A, поэтому я могу вспомнить, где в коде была интегрирована новая функция, и я могу обновлять вещи по мере необходимости.

ответ

1

Из вашего описания я думаю, что я поеду либо одним из двух способов. Это зависит от того, что/как были сделаны изменения между A и B, поэтому трудно сказать, что будет лучше работать, не видя кода.

Вариант один, чтобы создать новую ветку (скажем C) от A, а затем вишневого выбрать API изменения, которые вы хотите из числа фиксаций между A и B.

Второй вариант - отменить все удаления (которые вы сейчас хотите вернуть) между A и B. Самое главное - создать резервную ветвь, чтобы независимо от того, как вы завинчиваете, просто перемотать назад и начать заново (например, git branch B.mybackup B). Затем выполните интерактивную перезагрузку (например, git checkout B; git rebase -i A), где вы удаляете коммиты, которые удаляют код, который вы хотите вернуть.

+0

Ваш второй вариант работал отлично. Благодаря! –

+0

Рад помочь :) – hlovdal

Смежные вопросы