2015-06-07 3 views
1

Я написал код для реализации двух новых функций в проекте, но я внес изменения в мастер. Теперь я понимаю, что это была ошибка, потому что одна из функций работает хорошо, а другая - нет.Создать ветку от мастера с удаленным кодом

Я хотел бы сохранить код рабочей функции в главном, но удалить код неработающей функции из мастера.

Я хочу, чтобы текущая версия проекта (с обеими функциями) появилась в новой ветке.

Я бы просто создал новую ветку от мастера, а затем удалил код из неработающей функции от мастера, но я беспокоюсь, что коммиты будут в основном неправильными, и когда я объединю ветку назад в какой-то момент, git просто отменит код для неработающей функции, потому что новая ветка будет за фиксаторами, которые удаляют этот код.

Есть ли лучший способ сделать это?

+0

Может быть дубликат http://stackoverflow.com/q/29350859/243861 –

ответ

1

Во-первых, вы должны сохранить текущий главный филиал в качестве филиала развития, используя

git checkout -b development 

Далее, вам нужно восстановить мастер (потому что мастер не для развития, считают священными, если Вы не являетесь единственным разработчик, и вы знаете, что делаете).

git branch -D master && git checkout -b master --track origin/master 

Если вы не имеете вверх по течению хранилище происхождения (GitHub/Bitbucket/gitlab и т.д.), вы можете использовать вместо git reset HEAD, или вы можете использовать git checkout -b master <SHA_of_last_sane_commit_on_master>.

Теперь создать новый филиал для функции 1 из мастера, и вишневый выбор совершает для функции 1 в эту отрасль, используя

git checkout -b feature_1 
git cherry-pick SHA_of_first_commit_for_feature_1 
git cherry-pick SHA_of_second_commit_for_feature_1 
# and so on. 

Далее, создать свежую ветвь для функции 2 таким же образом, как выше.

Это предполагает, что ваши коммиты не перекрываются для двух функций, если они это сделают, вам придется вручную изменять содержимое файлов.

Теперь, когда слияние, все, что вам нужно сделать, это объединить feature_1 в master, затем feature_2 в master.

+0

Да, я должен был упомянуть, что мои фиксации накладываются друг на друга. Я попытаюсь сделать что-то вручную. Спасибо за совет за будущее. – Eugene

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