Я бы настоятельно рекомендовал бы не помещать несвязанные данные в данный
Git репозиторий. Затраты на создание новых репозиториев довольно
низкий, и это функция , которая позволяет сохранить
различные линии совершенно разные.
Борьба с этой идеей означает в конечном итоге ненужную запутанную историю,
что делает администрирование более сложным и - более
главное - инструменты «археологии» менее полезны из-за
разведение. Также, как вы упомянули, Git предполагает, что «единица
клонирование "является хранилищем, и практически должен сделать это из-за
его распределенная природа.
Одним из решений является сохранение каждого проекта / пакета / и т. Д. как свой голый
хранилище (т.е. без рабочего дерева) в благословенной иерархии,
как:
/repos/a.git
/repos/b.git
/repos/c.git
Как только несколько конвенций были созданы, это становится тривиальным
применять административные операции (резервное копирование, упаковка, веб-публикация) к
полная иерархия, которая выполняет роль, не полностью отличную от
«Монолитные» хранилища SVN. Работая с этими репозиториями также
становится несколько похожим на рабочие процессы SVN, с добавлением, что один
может использовать локальные коммиты и ветки:
svn checkout --> git clone
svn update --> git pull
svn commit --> git push
Вы можете иметь несколько пультов в каждом рабочем клоне, для простоты
синхронизация между несколькими сторонами:
$ cd ~/dev
$ git clone /repos/foo.git # or the one from github, ...
$ cd foo
$ git remote add github ...
$ git remote add memorystick ...
Затем вы можете получать / извлекать из каждого «источника», работать и фиксировать
локально, а затем нажмите («резервное копирование») на каждый из этих пультов, когда вы
готовы с чем-то вроде (обратите внимание, что это толкает же коммиты
и история каждому из пультов!):
$ for remote in origin github memorystick; do git push $remote; done
Самый простой способ превратить существующее рабочее хранилище ~/dev/foo
в такое пустое хранилище, вероятно:
$ cd ~/dev
$ git clone --bare foo /repos/foo.git
$ mv foo foo.old
$ git clone /repos/foo.git
, который в основном эквивалентен svn import
- но не выбрасывает
существующая, «местная» история прочь.
Примечание: подмодули - это механизм для включения общих связанных
родословные, так что я действительно не считаю их подходящим инструментом для
проблема, которую вы пытаетесь решить.