Подтвердить что ты не робот

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

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

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

/var/Common.git

/var/Project1.git

/var/Project2.git

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

4b9b3361

Ответ 1

Вероятно, вы ищете подмодули:

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

Ключевое слово встроено: фактический клон 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. Если у вас есть дополнительные вопросы, обратитесь к man-странице или выполните поиск SO; здесь есть много вопросов о подмодулях.

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

Ответ 2

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

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

В клонированном репо хранится только хэш Common git. Итак, вы git submodule init и checkout.