Я рекомендую не использовать подмодули git, а 2 разных репозитория, которые не подключены к github.
Вы можете построить отношения между ними, используя символические ссылки на извлеченных копиях, что является простым и простым.Символические ссылки должны создаваться только один раз для каждого местоположения (производство, разработка, коллеги).
Преимущество состоит в том, что никто не должен прилагать дополнительные усилия для изучения и поддержки подмодулей git, и вы избегаете риска и сложности егоприносит.
Это можно сделать, сохранив рабочую копию операционной системы и частного репозитория git где-нибудь на вашем локальном компьютере:
/repos/myproject-os
/repos/myproject-priv
Затем вы можете создать свою структуру каталогов, гдепроект на самом деле будет жить и работать где-то еще на этом компьютере (не в / repos / tree) и создавать символьные ссылки для подкаталогов, которые вы используете:
ln -s /repos/myproject-os/dir1 /wrk/myproject/base/dir1
ln -s /repos/myproject-os/dir2 /wrk/myproject/base/dir2
ln -s /repos/myproject-priv/dir1 /wrk/myproject/base/dir3
ln -s /repos/myproject-priv/dir2 /wrk/myproject/base/someother/dir4
mkdir /wrk/myproject/base/config
mkdir /wrk/myproject/base/tmp
Таким образом, структура хранилища всегда будет чистойи вы можете смешивать и упорядочивать каталоги из обоих репозиториев так, как вам нужно, и у вас также есть место для локальных конфигураций или временных файлов, которые не попадают в репозитории.
Вы бы сделали коммиты git и всеиз / repos / tree, и ваш проект запустится, и вы отредактируетефайлы из дерева / wrk /.Обратите внимание, что директория .git, в которой находятся данные git, не будет доступна из / wrk / tree, поскольку вы ссылаетесь только на подкаталоги (или, возможно, отдельные файлы из корневого каталога).
Part2: Вы говорите, что хотите убедиться, что случайно не вставили приватный код в публичный репозиторий.Вы можете настроить дополнительный репозиторий git между вашим репозиторием операционной системы и репозиторием github, скажем, вы поместите его в / repos / gatekeeper, тогда ваше дерево будет выглядеть так:
/repos/gatekeeper/myproject-os
/repos/myproject-os
/repos/myproject-priv
Каждый раз, когда вы нажимаете из/ repos / myproject-os идет в / repos / gatekeeper / myproject-os.Но из / repos / myproject-priv вы отправляете прямо в частное репозиторий github.
Таким образом, у вас одинаковый рабочий процесс в / repos / myproject-os и / repos / myproject-priv, и вы этого не делаетенадо так сильно переживать.Время от времени, когда вы хотите отправить свои изменения в реальную кодовую базу ОС, вы переходите в / repos / gatekeeper / myproject-os и отправляете оттуда в github.
Перед этим вы можете выполнить дополнительный анализ кода ипосмотрите на различия, чтобы быть уверенными, что только то, что вы действительно хотите, становится достоянием общественности.
Если вам нужна дополнительная безопасность, / repos / gatekeeper / myproject-os также может находиться на другом компьютере или даже в другом месте.