Мне нужно перенести полное репо на новый компьютер, не подключенный к сети, предпочтительно как единый файловый объект. Расслоение мерзавца позволяет git fetch
, git pull
операции типа в среде Sneakernet , но , кажется, предположить , что у вас уже есть рабочая версия репо на машине назначения.
Как правильно призывать:
- Объединить все ветки в текущем репо
- Запустите новое репо в целевом каталоге, т.е. правильно установите корневой коммит.
Я отправил патч вверх по течению, чтобы прояснить:
`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.
Так что $ git bundle create repo.bundle --branches --tags
лучше всего подходит клонирование.
$ git bundle create repo.bundle --all
предоставит зеркальное отображение вашей исходной машины, включая ее удаленные ссылки.
--all
моей странице руководства нет параметровbundle
(я смотрю на версию 1.7.6.msysgit.0), а также нет использования файла .bundle в разделе URL-адресов дляclone
. Я с большей уверенностью могу рекомендовать его использование.git bundle create <file> <git-rev-list-args>
. Бегman git-rev-list
(илиman git-log
) даст вам--all
. Но я согласен с тем, что это должно быть более заметно в документации по командам пакета.git show-ref
», что не включает [list] параметры git-rev-list.git-rev-list-args
как вы выбираете ссылки, которые показываютсяgit show-ref
командой.--all
для меня были включены ветки удаленного отслеживания (git 2.1.4). Я мог видетьrefs/remotes/origin/*
с помощьюgit bundle list-heads bundlefile
илиgit ls-remote bundlefile
. Хотя вернуть их из комплекта немного сложно.Сначала клонируйте репозиторий и включите
--mirror
опцию.git clone --mirror git@example.org:path/repo.git
Это гарантирует, что все удаленные ответвления также являются локальными, готовыми к объединению.
Тогда беги
git bundle create repo.bundle --all
как описано в ответе Якуба Наребскиисточник
Я бы посоветовал вам заархивировать папку .git в tar или zip и просто распаковать ее в новом месте, а затем сделать
git reset --hard HEAD
. Все, что требуется для всех веток, находится в .git, и все, что вам нужно сделать, это настроить любые пульты в файле .git / config или удалить их.источник