Как переместить базовый коммит, от которого наследуется моя ветвь, в первый коммит в текущей ветке? - PullRequest
0 голосов
/ 17 октября 2018

Как сделать так, чтобы x-branch

feature/name          D - E - F
                  /
develop A - B - C 

выглядел следующим образом

feature/name      C - D - E - F
              /
develop A - B

и переместить C, чтобы стать первым коммитом на y-branch

РЕДАКТИРОВАТЬ Извините за опечатку.Вот краткий сценарий того, что мне нужно

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

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Что вы можете сделать, это создать новую ветку feature/name2 из коммита B из ветки разработки.Затем скопируйте в него все коммиты и удалите старую ветку feature/name.

Посмотрите, поможет ли это.

# Go to commit B
git checkout <B commit id>

# Create a new branch from Commit B
git checkout -b "feature/name2"

# Copy all commit (D to F) to this new branch.
git cherry-pick <C commit id>
git cherry-pick <D commit id>
git cherry-pick <E commit id>
git cherry-pick <F commit id>

#If you want you can delete the old branch using (use with caution)
git branch -D feature/name

# To delete commit C from develop branch
git checkout develop
git reset HEAD~     

С удаленной ветки вы можете удалить старую функциональную ветвь после нажатия этой новой ветки.Вы можете переименовать эту ветку на feature/name также после удаления как локальной, так и удаленной feature/name ветки.

0 голосов
/ 17 октября 2018

Если я правильно понимаю вашу диаграмму, вы хотите переместить develop, чтобы указать B вместо C.

Чтобы сделать это локально:

  1. git checkout B
  2. git branch -D develop
  3. git checkout -b develop

Конечно, если вы хотите применить те же изменения к удаленному репо, вы такженужно удалить пульт develop, (git push --delete) и воссоздать его (git push).

Обновление: минорная заметка:

Судя по комментариям и другому ответу, оноКажется, есть неправильное понимание того, как работают git ветки.Проще говоря, ветвь feature/name НЕ состоит из коммитов D, E и F.Он состоит из всех 6 коммитов A, B, C, D, E и F.См. https://git -scm.com / book / ru / v1 / Git-Branching-What-a-Branch-Is или другие примеры для более подробных объяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...