Как вырезать из большой git истории, но сохранить способность объединять / перебазировать - PullRequest
0 голосов
/ 05 марта 2020

В настоящее время я сталкиваюсь с большим репозиторием git (назовем его upstream) с коммитами, которые уходят более чем на 10 лет назад. Мне не нужна большая часть истории из этого. На самом деле, этого было бы достаточно, чтобы вырезать из него ветку и перенести ее в собственный репозиторий, а также поддерживать возможность слияния коммитов из исходной ветви upstream время от времени. На мой взгляд, размер репо будет небольшим.

Изображен: от

          D' - E' upstream/release
         /
A - B - C - D - E upstream/dev

до

D' - E' myrepo/release

и сможет git merge upstream/release или git rebase myrepo/master.

Я знаю, что myrepo/release потребуется искусственный инициат. Я уже много пробовал с git checkout --orphan, git rebase --onto et c. но не пришли к решению. Может быть, кто-то может помочь с хорошей идеей!

Спасибо, Дженс

1 Ответ

0 голосов
/ 05 марта 2020

Я придумал следующее:

git checkout --orphan my_release D'
git add .
git commit -m "Started new history"

и затем перебил всю ветку upstream/release:

git checkout upstream/release
git rebase --onto my_release D' upstream/release

и слил:

git checkout my_release
git merge upstream/release

Это приводит к новым идентификаторам фиксации, но обновление в будущем может работать через перебазирование.

Этот ответ очень помог.

...