Это возможно, но это зависит от ваших ожиданий.
Что нужно сделать:
Перенос истории в новый репозиторий git (задача не из легких, но я буду признан, что вам это удастся)
Добавьте этот новый репозиторий как удаленный в репозиторий, содержащий уже новейшую историю (git remote add ...
) и git fetch --all
Создайте локальную ветвь (и) на последнем коммите и отправьте ее в ваш центральный репозиторий.
Теперь вам придется играть с git replace --graft
, чтобы связать старую историю с новой.
Из документа:
git replace --graft <commit> [<parent>…]
Создать коммит для прививки. Новый коммит создается с тем же содержимым, что и за исключением того, что его родители будут […] вместо родителей.
Запустите команду:
git replace --graft <sha1_first_commit_new_history> <sha1_last_commit_old_history>
Здесь у вас есть 2 варианта:
запускайте эту команду во всех уже существующих репозиториях и запускайте эту команду каждый раз, когда вы клонируете репозиторий.
сделать трансплантат постоянным, но с той обратной стороной, что весь sha1 новой истории изменится. Вы должны проверить, приемлемо ли это для вас.
Если это так:
git filter-branch -- --all
, чтобы сделать его постоянным (после этого проверьте результат и удалите резервные ветви веток фильтра, если все в порядке)
git push --force -- --all
(обновит центральный удаленный репозиторий)