Как сделать полный пакет репозитория Git
Мне нужно перенести полное репо на новый не подключенный к сети компьютер, предпочтительно в виде единого файла. Пакет Git позволяет git fetch
, git pull
стиль работы в среде sneakernet, но, похоже, предполагается, что у вас уже есть рабочая версия репозитория на конечном компьютере.
Как правильно обращаться к:
- Объедините все ветви в текущем репо
- Запустите новый репозиторий в целевом каталоге, то есть правильно установите корневой коммит
4 ответа
Как правильно обращаться к:
- Объедините все ветви в текущем репо
Просто:
$ git bundle create repo.bundle --all
Вот repo.bundle
Имя файла пакета, который вы хотите создать. Обратите внимание, что --all
не будет включать ветви удаленного слежения... как обычный клон тоже не будет.
- Запустите новый репозиторий в целевом каталоге, то есть правильно установите корневой коммит
Первый, clone
просто init
+ fetch
(+ администрация).
Во-вторых, вы можете использовать пакетный файл везде, где может использоваться URL хранилища, так что вы можете просто clone
из связанного файла:
$ git clone repo.bundle
Это создаст repo
как репозиторий Git.
Сначала клонируйте репозиторий, и включите --mirror
вариант.
git clone --mirror git@example.org:path/repo.git
Это гарантирует, что все удаленные филиалы также являются локальными филиалами, готовыми к объединению.
Тогда беги
git bundle create repo.bundle --all
как описано ответом Якуба Наребского
Я хотел бы предложить вам tar или заархивировать папку.git и просто распаковать ее в новом месте, а затем сделать git reset --hard HEAD
, Все, что требуется для всех веток, находится в.git, и все, что вам нужно сделать, это настроить все пульты в файле.git/config или удалить их.
tar cf myrepo.tgz .git
cp myrepo.tgz [USB_STICK]
... move to new machine ...
mkdir myrepo && cd myrepo
tar xpf [USB_STICK]/myrepo.tgz
git reset --hard HEAD
С Git 2.34 (4 квартал 2021 г.)
git blundle
дополнительно уточняется:
См. Коммит 1d9c8da, коммит 0bb92f3 , , коммит 5c8273d (31 июля 2021 г.), автор: Ævar Arnfjör Bjarmason (
avar
) .
(Слияние Junio C Hamano -
gitster
- в коммите f19b275 , 24 августа 2021 г.)
коммит 9ab80dd
bundle doc
: подробно описать предпосылки объектаПодписал: var Arnfjör Bjarmason
Выделите обсуждение «предварительных требований к объекту» в отдельный раздел и добавьте еще несколько примеров распространенных случаев.
См. 2e0afaf («Добавить git-bundle: перемещать объекты и ссылки по архиву», 2007-02-22, Git v1.5.1-rc1 - merge) для ознакомления с изменяемой здесь документацией.
теперь включает в свою справочную страницу :
См. Раздел «НЕОБХОДИМЫЕ ОБЪЕКТЫ» ниже.
теперь включает в свою справочную страницу :
НЕОБХОДИМЫЕ ОБЪЕКТЫ
При создании пакетов можно создать автономный пакет, который можно разделить в репозиторий без общей истории, а также предоставить отрицательные ревизии для исключения объектов, необходимых в более ранних частях истории.
Кормление ревизии, например,
git bundle create
создаст файл пакета, содержащий все объекты, доступные из ревизии. Этот пакет можно разделить в любом репозитории, чтобы получить полную историю, которая приводит к пересмотру:$ git bundle create full.bundle new
Диапазон ревизий, например, создаст файл пакета, который потребует ревизии
old
(и любые объекты, доступные из него), чтобы пакет мог быть "разделен":$ git bundle create full.bundle old..new
Автономный пакет без каких-либо предварительных условий может быть извлечен куда угодно, даже в пустой репозиторий, или быть клонирован из (т. Е.
new
, но нетold..new
).
git bundle
теперь включает в свою справочную страницу :
Команду git bundle verify можно использовать, чтобы проверить, есть ли в вашем репозитории получателя необходимые предварительные коммиты для пакета.