Как получить git репо только с последним коммитом - PullRequest
1 голос
/ 07 февраля 2020

Я использую (просто не развиваю) репо других людей 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 размер хранилища

1 Ответ

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

Итак, у вас есть локальный репозиторий git, который вы клонировали. Вы хотите получить только самую последнюю версию главной ветви.

git pull origin master --depth=1

Эта команда извлекает последнюю 1 фиксацию в главной ветви и объединяет ее с вашим локальным репозиторием. Если вы внесли какие-либо изменения в вашу локальную версию, это может привести к конфликтам слияния, с которыми вам придется иметь дело, но OP указывает, что это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...