Наличие .git
в качестве файла, который указывает на другой репозиторий, называется gitlink, и это не обязательно указывает на рабочее дерево; подмодули также используют их, и они могут использоваться и в других, менее распространенных ситуациях. Первоначально символические ссылки использовались для этой цели, но это не очень хорошо работает в Windows, где для символических ссылок требуются специальные разрешения.
Если вы хотите узнать, находится ли каталог в главном репозитории или в рабочем дереве, вы должны сравнить выходные данные git rev-parse --git-dir
и git rev-parse --git-common-dir
. Если они одинаковые, то это основной репозиторий. Если они отличаются, то это рабочее дерево.
Обратите внимание, что вы должны использовать последний Git, чтобы это работало. До тех пор, пока (я полагаю), Git 2.13, git rev-parse --git-common-dir
не предоставил неверных результатов в некоторых случаях, которые будут влиять на эту проверку. Нет способа правильно проверить эти версии, кроме как обновить версию Git.