В git, как мне удалить коммит из ветки, но сохранить этот коммит в отдельной ветке? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть ветка DEV с историей, похожей на эту (с каждым элементом списка, являющимся отдельным коммитом):

  • функция 5
  • функция 4
  • функция 3
  • функция 2
  • функция 1

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

По сути, из приведенной выше ветки dev я хочу получить две ветки, выглядящие так:

ФИЛИАЛ DEV :

  • функция 5
  • функция 4
  • функция 2
  • функция 1

НОВЫЙ ФИЛИАЛ :

  • функция 3
  • функция 2
  • функция 1

Есть идеи, как мне этого добиться в git?

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Для создания новой ветки до feature3:

git checkout <feature3_commit_id>
git checkout -b new_branch

Удалить feature3 из ветки разработчика

git checkout dev_branch
git rebase --onto <feature2_commit_id> <feature3_commit_id> <feature5_commit_id>

Просто к вашему сведению, вы можете использовать git log --oneline, чтобы найти идентификаторы коммитов.

0 голосов
/ 02 июля 2018

Создать новую ветку из feature3. Затем reset feature3 из ветви dev. Однако, если вы нажали эти коммиты, вам нужно будет использовать revert

Первое создание newbranch из feature3

git checkout dev
git branch newbranch feature3
git reset --hard feature3

Теперь, если вы не нажали на кнопку

git reset --hard feature3

Или, если вы нажали

git revert feature3

Также, если вы хотите добавить определенные коммиты к newbranch, например feature7, вы можете использовать

git checkout newbranch
git cherry-pick feature7
0 голосов
/ 02 июля 2018
#create NEW
git branch NEW commit3

#rewrite DEV
git rebase -i commit2 DEV

#in the editor remove the line "pick commit3", save and exit.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...