Мы работали над базой кода с одной веткой git [master] .

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

Таким образом, в настоящее время мы имеем

[master] <- one branch with feature 1 and feature 2

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

[master]    <- only feature 1
[feature-2] < - feature 1 and feature 2 (what the master is now)

Каков наилучший способ сделать это? Я могу думать только о том, чтобы создать ветку [feature-2] из master, а затем просто удалить весь код, который мне не нужен в master.

Тем не менее, мы можем иметь исправления ошибок и т.д. Для функции 1, которые необходимо сделать в [master] а затем объединить в [feature-2] .

Я не могу просто перейти от старого коммита, так как эти две функции были разработаны одновременно.

Есть ли способ лучше справиться с этим сценарием, чтобы я мог объединять ветви и т.д.?

Спасибо

2 ответа2

1

Если случится так, что у вас есть предыдущий коммит, где вы только что коммитили Feature feature-1 , вы можете просто указать основную ветку на этот коммит.

В соответствии с этим вы можете достичь этого, запустив:

git checkout master
git reset --hard <hash_of_the_commit>

Если нет, я думаю, что единственный способ добиться этого - сделать то, что вы сказали, ветвясь, а затем удалив любой нежелательный код.

Что касается второго вопроса, вы, вероятно, разработаете исправление в другой ветке, а затем сможете применить его к любой другой ветке, которая вам понадобится.

git checkout master
git merge hotfix
git checkout feature-1
git merge hotfix
git checkout feature-2
git merge hotfix

Вы можете увидеть больше об этом здесь, который описывает именно то, что вы спрашиваете.

0

Я думаю, что наиболее логичным способом является сохранение стабильного кода для обеих функций в master ветви, а также кода разработки, относящегося к функции 1 в ветви feature-1 и кода функции 2 в другой ветви feature-2 . Когда ваш код станет стабильным в этих ветках, вы можете объединить их с master .

Чтобы сделать это, создайте ветвь feature-2 , затем в master выполните git reset --hard для последнего коммита до начала Feature 2, затем создайте ветку Feature feature-1 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .