Что такое команда git, чтобы отличить папку рабочего дерева - PullRequest
2 голосов
/ 10 мая 2019

Я заметил, что в обычном git-репо в качестве папки будет .git, в то время как в репозитории worktree есть .git в виде файла.Это надежно?

Есть ли команда git, чтобы отличить их?

1 Ответ

2 голосов
/ 10 мая 2019

Наличие .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.

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