Как я могу отправить кому-нибудь электронное письмо в репозиторий git?

86

Я пытался:

git archive HEAD --format=zip > archive.zip

: а затем я отправляю по электронной почте archive.zip, а на другом конце они распаковывают archive.zip в папку. Но когда они пробуют любые команды git, они обнаруживают, что это не создает действительного репозитория git.

yazz.com
источник
20
Для других, кто обнаружит это: причина, по которой архив git не подходит для работы, в том, что он только упаковывает дерево работы. Это для того, чтобы делать такие вещи, как создание архива со всеми исходными кодами для распространения.
Cascabel

Ответы:

114

Вы можете использовать git bundleи отправить по электронной почте один файл

См. « Резервное копирование проекта, использующего git »

Пакет git - это всего лишь один файл, который можно очень легко создать и снова импортировать, поскольку с ним можно обращаться как с другим удаленным компьютером.

После получения вы можете клонировать его или получить из этого файла.

Как упоминалось в разделе « Резервное копирование репозитория github », вы, вероятно, захотите, чтобы первое электронное письмо было связано со всеми ветками:

$ git bundle create /tmp/foo-all --all

Как упоминает Андреас в комментариях, Скотт Чакон недавно (март 2010 г.) написал "симпатичную" статью на эту тему в блоге ProGit :

Маленькая связка радости Git

VonC
источник
3
@Zubair: да, вся история сохраняется, вопреки git archive!
VonC
2
Благодарю. Я понял это: git init, а затем: git pull bundle.bdl master
yazz.com
6
@Zubair: разделить? Вы можете просто клонировать его, чтобы вернуться к обычному репозиторию git. Или потяните в пустой репо. Теперь я понимаю, что вы сделали;)
VonC
1
Это хороший обзор того, как использовать команду bundle и что она делает: progit.org/2010/03/10/bundles.html
Андреас,
2
@BVengerov Ссылка теперь git-scm.com/blog/2010/03/10/bundles.html
VonC
4

Как сказано в предыдущем ответе, путь - это git bundle .

Если вы хотите создать пакет, используя только одну ветку (я предпочитаю объединять только ведущую) и отправлять по электронной почте, вы можете сделать что-то вроде ниже:

$ git bundle create /tmp/mygitbackup.bundle master

Ману Манджунатх
источник