git bundle
позволяет упаковать часть или весь репозиторий Git в один файл (bundle). Этот файл можно передать другому человеку, не имеющему прямого доступа к исходному репозиторию.
Когда используется:
git pull
или git push
из-за ограничений сети или безопасности.
git bundle
– это команда Git, которая позволяет упаковать репозиторий или его часть (коммиты, ветки, теги) в один файл, называемый "bundle" (связка). Этот файл содержит все необходимые данные для восстановления репозитория или для извлечения определенных коммитов/веток в другой репозиторий. По сути, это как ZIP-архив для Git, но предназначенный специально для передачи изменений между репозиториями без прямого сетевого доступа.
Как работает:
git bundle create <имя_файла> <диапазон_коммитов>
– Создает bundle-файл с указанным именем, содержащий коммиты, указанные в диапазоне. Диапазон коммитов может быть указан как:
main
(включит все коммиты от начала ветки main
).A..B
(включит все коммиты, достижимые из B
, но не достижимые из A
). A^..B
включает только коммиты, которых нет в A.--all
: Включит все ветки и теги в репозитории.git bundle verify <имя_файла>
– Проверяет, является ли файл валидным bundle-файлом и содержит ли он необходимые данные.git clone <имя_файла> <каталог>
– Клонирует bundle-файл в новый репозиторий. В данном случае, bundle-файл выступает как "удаленный" репозиторий.
git fetch <имя_файла>
– Подключает bundle-файл как удаленный репозиторий, позволяя извлечь (fetch) коммиты, ветки и теги из него. После этого можно выполнить git merge
или git checkout
для работы с извлеченными данными.
Когда используется:
Пример:
Допустим, у нас есть репозиторий на машине A, и мы хотим передать изменения в репозиторий на машине B, у которой нет прямого доступа к машине A.
git bundle create my_repo.bundle main
(Создаст bundle-файл с названием my_repo.bundle
, содержащий все коммиты из ветки main
).
my_repo.bundle
на машину B (например, через USB-накопитель).
git fetch my_repo.bundle main
(Подключает bundle-файл и извлекает ветку main
). После этого можно сделать git merge origin/main
, чтобы применить изменения, или создать новую ветку, основанную на origin/main
.
В заключение, git bundle
– это мощный инструмент для работы с Git в ситуациях, когда прямой сетевой доступ к удаленному репозиторию невозможен или нежелателен.