Как связать 1 Git репозиторий с некоторыми другими репозиториями? - PullRequest
23 голосов
/ 07 декабря 2010

Как связать репозиторий 1 git с некоторыми другими репозиториями?

Предположим, у меня есть следующие репозитории:

/ вар / Common.git

/ вар / Project1.git

/ вар / Project2.git

Теперь я хочу использовать Common.git в других репозиториях. как я могу это сделать?

Ответы [ 2 ]

39 голосов
/ 07 декабря 2010

Возможно, вы ищете подмодулей :

Подмодули позволяют встраивать внешние репозитории в выделенный подкаталог дерева исходного кода, всегда указывая на конкретный коммит.

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

# add Common.git as a submodule at the path "common" inside this repo
git submodule add /var/Common.git common
# initialize it, clone, and check out a copy
git submodule update --init
# commit the addition of the submodule
git commit

Обратите внимание, что путь к подмодулю будет зафиксирован в вашем хранилище, поэтому вам следует использовать общедоступный URL-адрес. Если вы хотите настроить его локально, вы можете запустить git submodule init, отредактировать URL в .git / config, а затем запустить git submodule update. Если у вас есть дополнительные вопросы, обратитесь к справочной странице или найдите SO; здесь есть много вопросов по подмодулям.

Если, с другой стороны, вы собираетесь редактировать содержимое Common.git внутри каждого из проектов, вы можете использовать git-subtree , который является дружественной оболочкой для поддерева git. объединить факультеты. Это позволит вам рассматривать содержимое common.git как отслеживаемое содержимое внутри каждого из проектов, в то же время имея возможность разделять коммиты на него и объединять их в самом Common.git, а также обновлять Common.git обратно в проекты. .

4 голосов
/ 07 декабря 2010

Это идеальный случай, для которого было разработано git submodule: http://git -scm.com / docs / git-submodule

В Project1 и Project2 вы добавляете подмодульобщего.И тогда вы git submodule checkout

В клонированном репо он хранит только хэш Common git.Таким образом, вы git submodule init и оформить заказ.

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