Два разных репозитория Git в том же каталоге

Я хочу поддерживать два разных репозитория git. Репозиции должны оставаться в одном корневом каталоге. Как его достичь?

Я хочу: управлять двумя репозициями, которые немного отличаются. Могу ли я иметь два совершенно разных репозитория в одной папке?

Спасибо за заботу:)

Ответ 1

Это можно сделать, добавив один из этих двух параметров в команду git:

git --work-tree=where/my/code/is --git-dir=some/path/to/my/.git status

Это позволит вам иметь 2 отдельных репозитория, имеющих общую рабочую папку.

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

Ответ 2

Я решил эту проблему, которая git, похоже, не дает хорошего решения, не используя git для ее решения. Я использовал каталог junction, чтобы связать новую подпапку с подпапкой родительской папки (т.е. привязать дочернюю папку к папке "дядя": P). Пример в командной строке для Windows Vista и выше:

cd CurrentFolder/
mklink /J "LinkedFolder" "../TargetFolder"

приведет к тому, что LinkedFolder укажет на TargetFolder (note). Пример структуры файла, который я использовал бы тогда:

  • корень /
    • TargetFolder/
      • общие файлы
    • CurrentFolder/
      • LinkedFolder/

"Операционные системы, совместимые с POSIX", как представляется, используют ln или ln -s для этой функции.

Он отлично работает (обратите внимание: следующее из моего тестирования Windows 8.1):

  • LinkedFolder не существует до вызова mklink
  • когда вы делаете ссылку, все, что вы делаете с файлами в TargetFolder или LinkedFolder, будет отражено в другом, поскольку они являются одним и тем же
  • если вы удалите ссылку (LinkedFolder), ничего не происходит с фактической целевой папкой (TargetFolder)
  • Если вы удалите фактическую целевую папку (TargetFolder), ссылка останется активной (она не будет удалена); если вы попытаетесь получить доступ к ссылке, вы просто получите сообщение об ошибке; если вы снова заново создадите целевую папку (TargetFolder), ссылка продолжит работу по-прежнему!

Надеюсь, это поможет кому-то. Я только что узнал об этой функции, и мне это нравится.

Смотрите также:
точка соединения NTFS
Символьная ссылка NTFS
Символическая ссылка