Создание ветки git для предыдущих коммитов: как лучше это сделать? - PullRequest
0 голосов
/ 13 октября 2011

Представьте себе следующее:

  • Связка связанных коммитов выполняется в ветке 'development'
  • Эти коммиты должны были фактически быть сделаны в ветке 'feature_x'
  • Ветка 'feature_x' должна быть объединена с веткой 'development'

Пример с графиком:

Текущая ситуация:

development (HEAD) A--B--C--D--E

Требуемая ситуация:

development         A--B
                        \
feature_x                C--D--E 

Как создать эту функциональную ветку, сгруппировать эти предыдущие коммиты в ветку и сделатьветка 'development' выглядит так, как будто с ней не было выполнено ни одного отдельного коммита?

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Вам на самом деле не нужно много:

git checkout devel
git checkout -b feature_x
# now devel and feature_x refer to commit E
git branch -f devel <hash of commit B>
# now you're still on feature_x, but devel is at commit B
0 голосов
/ 13 октября 2011
A--B--C--D--E(dev branch)
\
 \
   F--G(feature branch)

Я предполагаю, что вы хотите стать таким

A--(dev branch)
\
 \
   F--G--B--C--D--E(feature branch)

. Вы можете использовать git rebase, чтобы сделать это

в HEAD ветви dev, создать временную ветвь для перебазирования.цель

git branch temp
git rebase feature_branch

переместить девбранч на коммит A

git checkout dev_branch
git reset --hard <shasum of A>

переместить ветвь объекта на коммит E и удалить временную ветвь

git checkout feature_branch
git reset --hard <shasum of E>
git branch -D temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...