Использование одного клона может быть достаточно в качестве резервной копии. Но если у вас есть только один пульт, использующий аргумент --all команды git fetch , ничего не получится, так как это просто говорит git выбирать все сконфигурированные пульты.
Если вы хотите убедиться, что вы получаете все ссылки (включая ветки), вы можете запустить
git config --add remote.origin.fetch '+refs/*:refs/backup/*'
Это приведет к тому, что все ссылки с удаленного узла будут выбраны в отдельное backup пространство имен вашей иерархии ссылок. Эти ссылки не будут отображаться в выходных данных git branch даже с опцией -a .
Другой вариант - сначала клонировать из существующего локального репозитория, чтобы получить все крупные объекты в резервном клоне без использования сети (если ваша файловая система поддерживает жесткие ссылки, даже дисковое пространство будет разделено), а затем переключиться на выборку обновлений из хранилище, которое вы хотите сделать резервную копию.