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

Я хочу создать публичное репо, чтобы поместить некоторые примеры файлов из моего основного репо (private). Есть ли способ софт связать несколько папок с git репо на другой git репо?

Ответ 1

Затем вы должны использовать подмодули для этой задачи.

Подмодуль - это разные репозитории git под одним и тем же корнем.
Таким образом, вы можете управлять 2 различными проектами на уровне папок внутри корневого репозитория

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


git submodule

Разделите свой большой проект на подпроекты, как вы это делали до сих пор. Теперь добавьте каждый дополнительный проект в основной проект, используя:

git submodule add <url>

Как только проект добавлен в ваше репо, вы должны его инициализировать и обновить.

git submodule init
git submodule update

В качестве Git 1.8.2 добавлена ​​новая опция --remote

git submodule update --remote --merge

будет fetch последними изменениями от восходящего потока в каждом подмодуле, merge them in и check out последней версией подмодуль.

Как документы описывают это:

--remote

Этот параметр действителен только для команды обновления. Вместо использования суперпроектов, записанных SHA-1 для обновления подмодуля, используйте состояние ветки удаленного отслеживания подмодулей.

Это эквивалентно запуску git pull в каждом подмодуле.


Однако как я могу нажать фиксацию в сценарии исправления ошибок в C, который влияет на код, разделяемый родительскими слоями?

Опять же: использование подмодуля поместит ваш код в ваш основной проект как часть его содержимого. Разница между наличием локально внутри папки или наличием ее как части подмодуля заключается в том, что в подмодуле контент управляется (переводится) в другой автономный репозиторий.


Это иллюстрация проекта подмодуля внутри другого проекта, в котором каждый проект является автономным проектом.

введите описание изображения здесь


git subtree

Git поддерево позволяет вставить любой репозиторий в качестве подкаталога другого

Очень похоже на submodule, но основное различие заключается в том, где ваш код управляется. В подмодулях содержимое помещается внутри отдельного репо и управляется там, что позволяет вам клонировать его также ко многим другим репозиториям.

subtree управляет содержимым как часть корневого проекта, а не в отдельном проекте.

Вместо того, чтобы записывать, как настроить его и понять, как его использовать, вы можете просто прочитать эту отличную запись, которая объяснит все это.

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/