Вложенные git-репозитории без подмодулей? - PullRequest
32 голосов
/ 23 февраля 2010

Кажется, что git-репо внутри родительского репо не включено в коммит на родительском репозитории, если он не настроен как подмодуль.Можно ли переопределить это поведение и обращаться с вложенным git-репо как с любым другим каталогом?Я не хочу полагаться на внешние зависимости через подмодули, но хочу использовать git для управления этими зависимостями в рамках проекта.

Ответы [ 4 ]

7 голосов
/ 23 февраля 2010

1 / Вы можете переопределить это с помощью:

  • или git config : установите переменную окружения $GIT_DIR
    , которую вы определяете в каталоге .gitвложенное рабочее дерево Git в виде внешнего .git (внешнего как для вложенного репо, так и для основного репо)
  • или путем установки вашего вложенного репо 'N' снаружи основной репозиторий, но проверьте, что репо 'N' внутри основной репо:
core.worktree

Укажите путь к корню рабочего дерева.Это может быть переопределено переменной среды GIT_WORK_TREE и параметром командной строки --work-tree

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

2 / С субмодулями вложенное git-репо на самом деле не включено в родительское репо.
A специальная запись делается в родительском дереве для записи внешнего Git SHA1.

new file mode 160000
index 0000000..4c4c5a2

См. Также " природа подмодулей Git " (третья часть ответа)

5 голосов
/ 14 ноября 2015

Я нашел другой метод, который, кажется, работает для меня

Если вы git add somefolder/ <- убедитесь, что у вас есть <code>/ в конце, тогда он добавит все файлы вместо того, чтобы рассматривать его как подмодуль.

Подробнее упоминается здесь: http://debuggable.com/posts/git-fake-submodules:4b563ee4-f3cc-4061-967e-0e48cbdd56cb

2 голосов
/ 23 июня 2010

См. Также Являются ли подмодули git единственным безопасным способом иметь рабочие копии в рабочих копиях? .

На самом деле, когда я наткнулся на текущее обсуждение, я был обеспокоен проблемой, отличной от решаемой здесь: использование git в качестве своего рода инструмента архивации, который может архивировать дерево файловой системы, в котором уже есть некоторые рабочие каталоги git ... возможно, другой вопрос ближе к моей проблеме.

0 голосов
/ 27 ноября 2013

Это не самое элегантное решение, но стоит упомянуть.

Если вы заархивируете папку, содержащую хранилище, вы можете проверить это во внешнем хранилище.

Это может быть полезно, потому что у вас будет полное состояние, включая git reflog.

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