Возможно, проще всего с git filter-branch
. Фактически, это один из примеров в документации ветки фильтра:
Чтобы установить коммит (который обычно находится на вершине другой истории) в качестве родителя текущей начальной фиксации, чтобы вставить другую историю за текущей историей:
git filter-branch --parent-filter 'sed "s/^\$/-p <graft-id>/"' HEAD
Итак, здесь <graft-id>
- это ваш коммит D, если вы работаете с веткой, состоящей из коммитов BZR от E до H. Поэтому я предполагаю, что вы использовали инструменты миграции, чтобы перенести истории svn и bzr в git, и импортировал их как отдельные ветки в один репозиторий.