Связка!
Рабочий процесс с git bundle будет практически таким же, как и любой другой рабочий процесс. Это может показаться не очень полезным советом, но вот оно: используйте любой рабочий процесс, который вы обычно используете, и замените «push / pull» на «перенесите пакет сюда на флэш-накопитель, затем потяните».
На странице руководства есть довольно хорошее руководство по работе с этим, хотя это скорее односторонний пример. Для полноты, вот немного измененная версия, показывающая, как перемещать информацию в обе стороны:
# on hostA, the initial home of the repo
hostA$ git bundle create hostA.bundle --branches --tags
# transfer the bundle to hostB, and continue:
hostB$ git clone /path/to/hostA.bundle my-repo
# you now have a clone, complete with remote branches and tags
# just to make it a little more obvious, rename the remote:
hostB$ git remote rename origin hostA
# make some commits on hostB; time to transfer back to hostA
# use the known master branch of hostA as a basis
hostB$ git bundle create hostB.bundle ^hostA/master --branches --tags
# copy the bundle back over to hostA and continue:
hostA$ git remote add hostB /path/to/hostB.bundle
# fetch all the refs from the remote (creating remote branches like hostB/master)
hostA$ git fetch hostB
# pull from hostB's master, for example
hostA$ git pull
# make some commits on hostA; time to transfer to hostB
# again, use the known master branch as a basis
hostA$ git bundle create hostA.bundle ^hostB/master --branches --tags
# copy the bundle to hostB, **replacing** the original bundle
# update all the refs
hostB$ git fetch hostA
# and so on and so on
Ключевым моментом, на который следует обратить внимание, является то, что вы можете добавить пакет в качестве пульта и взаимодействовать с ним так же, как и с любым другим пультом. Чтобы обновить этот пульт, просто вставьте новый комплект, заменив предыдущий.
Я также немного изменил подход к выбору основы. Страница man использует теги, всегда обновленные с последними ссылками, которые были перенесены на другой хост. Я просто использовал удаленные ветви, которые будут ссылаться на последние ссылки, переданные с другого хоста. Это немного неэффективно; в итоге вы получите больше, чем нужно, так как это на шаг позади. Но флешки большие, пакеты маленькие, и использование ссылок, которые у вас уже есть, вместо того, чтобы делать дополнительный шаг и быть осторожным с тегами, экономит много усилий.
Единственное, что делает связки небольшим количеством проблем, это то, что вы не можете толкать их и не можете «перебазировать» их. Если вы хотите, чтобы пакет основывался на новой основе, вы должны воссоздать его. Если вы хотите новые коммиты в нем, вы должны воссоздать его. Это препятствие порождает мое следующее предложение ...
Репо на флешке
Честно говоря, если ваш репо не очень большой, это может быть так же просто. Поместите голый клон на флэш-накопитель, и вы можете нажать и вытащить его с обоих компьютеров. Рассматривайте это как ваше сетевое соединение. Нужно перевести в центральное репо? Подключите его!