Как преобразовать мелкий клон Git в полный клон?
В продолжение этого вопроса: если у меня мелкий клон, как получить все старые коммиты, чтобы сделать его полным клоном?
7 ответов
Вы можете запустить git fetch --depth=1000000
(при условии, что хранилище имеет менее миллиона коммитов).
Следующая команда (git version 1.8.3) преобразует мелкий клон в обычный
git fetch --unshallow
Затем, чтобы получить доступ ко всем веткам по происхождению (спасибо @Peter в комментариях)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
Мне нужно было углубить репо только до определенного коммита.
После прочтения man git-fetch
Я обнаружил, что нельзя указать коммит, но можно указать дату:
git fetch --shallow-since=15/11/2012
Для тех, кому нужно постепенное углубление, другое man
цитата:
--deepen=<depth>
Аналогичен --depth, за исключением того, что он указывает количество коммитов от текущей мелкой границы, а не от кончика истории каждой удаленной ветви.
Два способа добиться от мелкого клонирования до глубокого клонирования.:
Для загрузки ветки были выполнены следующие шаги: (Это загружает неглубокую копию ветки, а затем преобразует ее в полное клонирование, т.е. приносит полную ветку и ее историю).
а. git clone -b ветка http://git.repository/customSP01.git --depth 1
При этом неглубокий клон (с параметром глубины) извлекает только одну единственную ветвь (на запрошенной вами глубине).
b. cd customSP01
c. git fetch –depth=100
d. get fetch –depth=500
....
e. git fetch –unshallow
// Приведенная выше команда преобразует мелкий клон в обычный. Однако это не все ветви:
Затем, чтобы получить доступ ко всем веткам.
f. git remote set-branches origin '*'
[Этот шаг также можно выполнить вручную, отредактировав следующую строку в.git / config.
выборка = + ссылки / головы / мастер: ссылки / удаленные / происхождение / мастер
в (заменить мастер на *):
fetch = +refs / heads / *:refs / remotes / origin / *]
g. git fetch -v
Это преобразует мелкий клон в глубокий клон со всеми деталями истории и веток.
Вы можете избежать шагов f и g, если будете использовать команду ниже вместо команды, представленной на шаге a. сделать мелкий клон:
git clone -b branch --no-single-branch http://git.repository/customSP01.git --depth 1
Ни одно из приведенных выше сообщений не помогло. Я пытаюсь работать с тегами git, начиная с мелкого клона.
Сначала я попробовал
git fetch --update-shallow
какой вид работал на полпути. Пока нет доступных тегов!
git fetch --depth=1000000
Эта последняя команда действительно выбрала теги, и я наконец смог выполнить
git checkout -b master-v1.1.0 tags/v1.1.0
и покончим с этим.
НТН
Конфигурации, которые помогли устранить ошибку: (В GitLab) Для каждого проекта:
- На верхней панели выберите Главное меню > Проекты и найдите свой проект.
- На левой боковой панели выберите «Настройки» > CI/CD. Разверните Общие трубопроводы.
- В разделе «Стратегия Git» выберите «git fetch», в разделе «Поверхностное клонирование Git» введите значение 1000, максимальное значение для GIT_DEPTH. Подробнее — https://gitlab.yourcompany.com/help/ci/pipelines/settings#limit-the-number . -изменений, полученных во время клонирования{}
В .gitlab-ci-yml (это следует сделать перед любой командой, вызывающей GitVersion.exe)
before_script:
- git fetch --prune --tags --unshallow