Можно ли перенести отдельные наборы изменений на более раннюю точку истории? - PullRequest
1 голос
/ 24 марта 2011

Вот как выглядит наше дерево прямо сейчас:

@ branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
o branch: default
| bug fix C
|
|
o branch: default
| bug fix B
|
|
o branch: default
| new feature work
|
|
o branch: default
| bug fix A
|
|
o branch: default
| tag: ReleaseV1.0
|
|
 ... ancient history

Вот как я бы хотел, чтобы наше дерево выглядело:

@ branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
|
| o branch: V1.1Fixes
| | bug fix C
| |
| |
| o branch: V1.1Fixes
| | bug fix B
| |
| |
| |
| o branch: V1.1Fixes
| | bug fix A
| |
|/
o branch: default
| tag: ReleaseV1.0
|
|
 ... ancient history

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

В этом случае я бы использовал расширение transplant .Трансплантированные наборы изменений не перемещаются в ветке fixes, но также остаются в ветви разработки (default).Я не совсем догадываюсь, что это за коммиты "работа с новыми функциями", но я чувствую, что вы пытаетесь transplant.

Не удаляя ваши коммиты "работы с новыми функциями", график истории будет выглядетьчто:

  o branch: V1.1Fixes
  | transplanted bug fix C
  |
  |
@ | branch: default
| | new feature work
| |
| |
| o branch: V1.1Fixes
| | transplanted bug fix B
| |
| |
o | branch: default
| | new feature work
| |
| |
o | branch: default
| | bug fix C
| |
| |
o | branch: default
| | bug fix B
| |
| |
| o branch: V1.1Fixes
| | transplanted bug fix A
| |
| |
o | branch: default
| | new feature work
| |
| |
o | branch: default
| | bug fix A
| |
|/
o branch: default
| tag: ReleaseV1.0
|
|
 ... ancient history

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

0 голосов
/ 24 марта 2011

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

0 голосов
/ 24 марта 2011

Взгляните на RebaseProject и Расширение Rebase . Вы также можете использовать Расширение трансплантата , чтобы применить патч из ветви к одной или нескольким веткам (чтобы получить нечто похожее на то, что выглядит Django в истории).

...