Конвертировать git полный клон в мелкий клон - PullRequest
0 голосов
/ 17 февраля 2020

Как можно сделать глубокий клон хранилища в мелкую копию НА МЕСТЕ?

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

Так что было бы здорово, если бы эти хранилища можно было перевернуть в поверхностную копию, содержащую только развернутый в данный момент коммит, а не полное дерево. Во время обновления репо будет преобразовано обратно в глубокий клон, указанный коммит c извлечен, а затем превращен в неглубокий клон нового коммита.

git fetch --depth=1 --update-shallow не сокращает. git размер каталога, я думаю, что он будет получать любые новые коммиты, но он не удаляет старые данные. Добавление --shallow-exclude=HEAD^2 заставляет git выдавать ошибку, хотя я не совсем уверен, как это должно работать, хотя я бы рискнул предположить, что при получении HEAD ^ 2 возникают противоречивые требования, но мне нужно проверить HEAD, который зависит от HEAD ^ 2 в глубокий клон.

error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly

1 Ответ

0 голосов
/ 19 февраля 2020

Хорошо, так что в итоге это было решением:

ORIGIN_URL=$(git remote get-url origin)
COMMIT=$(git rev-parse HEAD)

rm -rf .git
git init .
git remote add origin $ORIGIN_URL
git fetch origin $COMMIT --depth 1
git reset --mixed $COMMIT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...