Какой самый простой способ клонировать пустой * голый * git-репозиторий? - PullRequest
16 голосов
/ 22 мая 2009

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

Идеальное решение будет поддерживать опцию -o для присвоения удаленному репо имени, отличного от origin, и будет реализовано в виде простого сценария оболочки, например, git-clone-empty-repo.

(Почему я хочу это сделать: я установил пустое пустое git-репо на нашем NetApp filer, где он будет зарезервирован, но я хочу работать с клоном на моем локальном жестком диске и извлекать файлы туда и обратно. Другие люди, с которыми я работаю, будут делать то же самое. Я часто создаю новые репозитории git, и моя неспособность клонировать пустое репо сводит меня с ума.)


РЕДАКТИРОВАТЬ : поток VonC предполагает, что

$ git-init
$ git-remote add origin server:/pub/git/test.git

эквивалентно клонированию удаленного репо, когда репо пусто. Это не совсем то, что я хочу, потому что я всегда использую опцию -o с git clone; Я называю удаленное репо в зависимости от того, на какой машине он находится, или по какому-то другому критерию. (У меня слишком много репо, чтобы держать их прямо, если они все называются origin.)


РЕДАКТИРОВАТЬ : Следующий ответ будет помечен как принятый: -)

Чтобы клонировать пустой репозиторий на path ,

  1. Храните в ~/git/onefile непрозрачное git-репо, содержащее один безобидный файл, такой как .gitignore. (Либо создайте такое хранилище динамически.)
  2. (cd ~/git/onefile; git push путь master)
  3. git clone -o имя путь

Другими словами, не пытайтесь клонировать пустое хранилище, а, скорее, создав его, добавьте к нему простое хранилище, содержащее один безобидный файл. Тогда он больше не пуст и может быть клонирован.

Если кто-то меня не побьет, я выложу скрипт оболочки.

1 Ответ

13 голосов
/ 22 мая 2009

Может быть просто git-репо с минимальным количеством файлов в нем:

one: .gitignore с очевидными шаблонами игнорирования.

А затем клонировать этот «почти пустой» репозиторий.
Обратите внимание, что такой «почти пустой» репозиторий («почти», потому что он по-прежнему имеет минимальный рабочий каталог вместе с каталогом .git) может затем «1007 *» (как показано здесь ), что делает его настоящее голое репо (но не «пустое»).
Это тот голый репо, который вы можете затем:

  • клонируйте везде, где вы хотите.
  • или (что более важно) подтолкнуть к (так как это голое репо)

У вас есть в этой теме хорошая сводка "обратного пути" (которую я держу здесь для справки).

$ git-init
$ git-remote add origin server:/pub/git/test.git

Для нового проекта (кода пока нет) я хотел сделать пустой, голый
репозиторий (без рабочей копии) на удаленном общедоступном сервере в качестве начального
указать, клонировать его локально и постепенно создавать контент локально и
отправить его на удаленный публичный сервер.

На что Хунио С Хамано ответил:

Вы подготовили пустой голый репозиторий для публикации, и это очень хорошо.

Следующим шагом является то, что вы готовите свое содержимое в другом месте. Тот будет вашим личным рабочим местом, то есть местом, где вы будете нормально работают в).
Вы толкаете с вашего личного рабочего места в этот издательский репозиторий.
Ваше рабочее место где исходный коммит должен исходить, так как вы - единственный кто запускает проект.

Обратите внимание, что личное рабочее место не обязательно должно быть клоном пустого. Это на самом деле назад. Твоя работа начался с вашего личного рабочего места до публикации.

Вы даже можете клонировать свой личный репозиторий для его публикации. чтобы было понятно, кто хозяин, а кто копия, если вы хотел, но потому что у вас уже есть голое хранилище для публикация, просто вдаваясь в это все, что нужно.

...