Конвертировать мелкий репо в нормальный репо - PullRequest
0 голосов
/ 16 января 2019

У меня "мелкий" репо:

FIRST_COMMIT="bf450342272a94117d78eae34a140a2a39359dad"
git rev-parse ${FIRST_COMMIT} > .git/shallow
git fsck --unreachable
git gc --prune=now

Теперь я пытаюсь нажать:

! [remote rejected] develop -> develop (shallow update not allowed)

Я понимаю, что это ограничение связано с тем, что репо мелкое.

Как я могу преобразовать поверхностное репо в обычное репо?

Мне плевать на потерю старой истории. На самом деле, я хочу потерять старую историю

Чтобы уточнить это:

  • Я хочу, чтобы преобразованное хранилище сохраняло историю коммитов с метаданными (дата, автор, сообщение о коммитах, ...) мелкого репо
  • Я хочу полностью потерять старую историю
  • Меня не волнует совместимость с исходным репо: это следует считать новым репо
  • Мне все равно, если коммиты воссоздаются, просто метаданные сохраняются.

EDIT

Простое удаление файла .git/shallow не работает:

» git push -f --set-upstream myorigin develop
error: Could not read d18d4a247bebd32a3b57b2c0e5f9c28749083211
fatal: revision walk setup failed
error: remote unpack failed: eof before pack header was fully read
error: failed to push some refs to 'git@somehost:repos/somerepo.git'

EDIT2

Попытка отменить с fetch:

git fetch --unshallow

Все еще оставляет репо grafted:

commit bf450342272a94117d78eae34a140a2a39359dad (grafted)
Author: The author
Date:   Thu Nov 29 16:55:05 2018 +0100

    Chages by pre-commit hook (!?)

1 Ответ

0 голосов
/ 16 января 2019

Уже есть похожий (идентичный?) вопрос с очень хорошим ответом , который также решает мою проблему.

В основном мне нужно сделать следующее:

git rev-parse --verify bf450342272a94117d78eae34a140a2a39359dad > .git/info/grafts
git filter-branch -f -- --all 

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

Тогда репо будет unshallowed / ungrafted, и его можно будет обычно отправлять на новые пульты с уменьшенной историей.

...