Я использую (просто не развиваю) репо других людей git, но мне не нужна вся история.
Казалось, что 'git clone --depth 1' соответствует моим требованиям.
Но
1) как мне обрезать существующие репозитории, как я делаю 'git клон --depth 1' ?
2 ) как я могу обновить репо без истории, чтобы репо оставалось только последним коммитом?
Предположим, история репо - AB- C, я выполняю 'git clone --depth 1', поэтому Я получаю репо C. Затем последующее обновление репо, история становится AB- C -DE. Могу ли я сделать простую операцию, чтобы получить репо E? Удалить репо и снова выполнить «git clone --depth 1»?
Я хочу это, потому что история какого-то репо слишком велика, git, может быть, 100M +, и мой inte rnet доступ не так стабильна, поэтому я хочу только последнее обновление.
Решение
1) сделать существующий репо поверхностным:
git rev-parse HEAD > .git/shallow
git reflog expire --all --expire=now
git gc --aggressive --prune=now
2 ) обновить поверхностное репо:
git fetch origin master --depth=1
git reset --hard origin/master
после обновления несколько раз, вы можете:
git reflog expire --all --expire=now
git gc --aggressive --prune=now
, чтобы снова удалить старые коммиты и файлы.
Ссылка
Как обновить git мелкий клон?
Уменьшить git размер хранилища